Fixed missing mesh.

This commit is contained in:
Harrison Deng 2020-07-02 14:51:45 -05:00
parent a881f1a086
commit 378712283a
5 changed files with 17 additions and 8 deletions

View File

@ -1150,12 +1150,13 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL
} }
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void PFNGLBUFFERSUBDATAPROC(BufferTargetARB target, IntPtr offset, IntPtr size, IntPtr data); private delegate void PFNGLBUFFERSUBDATAPROC(BufferTargetARB target, IntPtr offset, UIntPtr size, IntPtr data);
private PFNGLBUFFERSUBDATAPROC glBufferSubData; private PFNGLBUFFERSUBDATAPROC glBufferSubData;
public void BufferSubData(BufferTargetARB target, IntPtr offset, IntPtr size, IntPtr data) public void BufferSubData(BufferTargetARB target, IntPtr offset, UIntPtr size, IntPtr data)
{ {
glBufferSubData.Invoke(target, offset, size, data); glBufferSubData.Invoke(target, offset, size, data);
DetectGLError();
} }
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
@ -1165,6 +1166,7 @@ namespace SlatedGameToolkit.Framework.Graphics.OpenGL
public void GetBufferSubData(BufferTargetARB target, IntPtr offset, IntPtr size, out IntPtr data) public void GetBufferSubData(BufferTargetARB target, IntPtr offset, IntPtr size, out IntPtr data)
{ {
glGetBufferSubData.Invoke(target, offset, size, out data); glGetBufferSubData.Invoke(target, offset, size, out data);
DetectGLError();
} }
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]

View File

@ -11,6 +11,7 @@ using SlatedGameToolkit.Framework.Utilities;
namespace SlatedGameToolkit.Framework.Graphics.Render namespace SlatedGameToolkit.Framework.Graphics.Render
{ {
public class MeshBatch : IDisposable { public class MeshBatch : IDisposable {
public bool Debug { get; set; }
private const int VERTEX_LENGTH = 9; private const int VERTEX_LENGTH = 9;
private bool disposed; private bool disposed;
private float batchDelta; private float batchDelta;
@ -122,10 +123,10 @@ namespace SlatedGameToolkit.Framework.Graphics.Render
} }
int elementsCount = indices.Length; int elementsCount = indices.Length;
Array.Copy(indices, 0, this.indices, indicesIndex, elementsCount); Array.Copy(indices, 0, this.indices, indicesIndex, elementsCount);
indiceOffsets[offsetIndex] = indicesIndex * sizeof(uint);
indicesIndex += elementsCount; indicesIndex += elementsCount;
if (offsetIndex + 1 < verticeOffsets.Length) { if (offsetIndex + 1 < verticeOffsets.Length) {
verticeOffsets[offsetIndex + 1] = verticeOffsets[offsetIndex] + vertices.Length; verticeOffsets[offsetIndex + 1] = verticeOffsets[offsetIndex] + vertices.Length;
indiceOffsets[offsetIndex + 1] = indicesIndex * sizeof(int);
} }
lengths[offsetIndex] = elementsCount; lengths[offsetIndex] = elementsCount;
offsetIndex++; offsetIndex++;
@ -153,6 +154,12 @@ namespace SlatedGameToolkit.Framework.Graphics.Render
GLContext.UniformMatrix4fv(modelALoc, 1, false, modelsMatrix.ToColumnMajorArray()); GLContext.UniformMatrix4fv(modelALoc, 1, false, modelsMatrix.ToColumnMajorArray());
if (camera.ViewChanged) GLContext.UniformMatrix4fv(viewALoc, 1, false, camera.ViewMatrix.ToColumnMajorArray()); if (camera.ViewChanged) GLContext.UniformMatrix4fv(viewALoc, 1, false, camera.ViewMatrix.ToColumnMajorArray());
if (camera.ProjectionChanged) GLContext.UniformMatrix4fv(projALoc, 1, false, camera.ProjectionMatrix.ToColumnMajorArray()); if (camera.ProjectionChanged) GLContext.UniformMatrix4fv(projALoc, 1, false, camera.ProjectionMatrix.ToColumnMajorArray());
if (Debug) {
GLContext.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
} else {
GLContext.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
}
GLContext.MultiDrawElementsBaseVertex(PrimitiveType.Triangles, lengths, DrawElementsType.UnsignedInt, indiceOffsets, offsetIndex, verticeOffsets); GLContext.MultiDrawElementsBaseVertex(PrimitiveType.Triangles, lengths, DrawElementsType.UnsignedInt, indiceOffsets, offsetIndex, verticeOffsets);
dataIndex = 0; dataIndex = 0;
indicesIndex = 0; indicesIndex = 0;

View File

@ -47,7 +47,7 @@ namespace SlatedGameToolkit.Framework.Graphics.Render
glContext.BufferData(BufferTargetARB.ArrayBuffer, requiredLength, new IntPtr(pointer), dynamic ? OpenGL.BufferUsageARB.DynamicDraw : OpenGL.BufferUsageARB.StaticDraw); glContext.BufferData(BufferTargetARB.ArrayBuffer, requiredLength, new IntPtr(pointer), dynamic ? OpenGL.BufferUsageARB.DynamicDraw : OpenGL.BufferUsageARB.StaticDraw);
vertexBufferLength = requiredLength; vertexBufferLength = requiredLength;
} else { } else {
glContext.BufferSubData(BufferTargetARB.ArrayBuffer, IntPtr.Zero, new IntPtr(requiredLength), new IntPtr(pointer)); glContext.BufferSubData(BufferTargetARB.ArrayBuffer, IntPtr.Zero, new UIntPtr(requiredLength), new IntPtr(pointer));
} }
} }
} }
@ -60,7 +60,7 @@ namespace SlatedGameToolkit.Framework.Graphics.Render
glContext.BufferData(OpenGL.BufferTargetARB.ElementArrayBuffer, requiredLength, new IntPtr(pointer), dynamic ? OpenGL.BufferUsageARB.DynamicDraw : OpenGL.BufferUsageARB.StaticDraw); glContext.BufferData(OpenGL.BufferTargetARB.ElementArrayBuffer, requiredLength, new IntPtr(pointer), dynamic ? OpenGL.BufferUsageARB.DynamicDraw : OpenGL.BufferUsageARB.StaticDraw);
indexBufferLength = requiredLength; indexBufferLength = requiredLength;
} else { } else {
glContext.BufferSubData(BufferTargetARB.ElementArrayBuffer, IntPtr.Zero, new IntPtr(requiredLength), new IntPtr(pointer)); glContext.BufferSubData(BufferTargetARB.ElementArrayBuffer, IntPtr.Zero, new UIntPtr(requiredLength), new IntPtr(pointer));
} }
} }
} }

View File

@ -12,8 +12,7 @@ void main()
{ {
if (textured) { if (textured) {
if (singleChanneled) { if (singleChanneled) {
float singleVal = texture(texture0, vec2(texCoord.x, 1 - texCoord.y)).r; outputColor = vec4(color.xyz, texture(texture0, vec2(texCoord.x, 1 - texCoord.y)).r);
outputColor = vec4(singleVal);
} else { } else {
outputColor = texture(texture0, vec2(texCoord.x, 1 - texCoord.y)) * color; outputColor = texture(texture0, vec2(texCoord.x, 1 - texCoord.y)) * color;
} }

View File

@ -86,7 +86,8 @@ namespace SlatedGameToolkit.Tools.Utilities.Playground
renderer.Draw(logo); renderer.Draw(logo);
renderer.Draw(textureTester); renderer.Draw(textureTester);
renderer.Draw(untextured); renderer.Draw(untextured);
font.Draw(renderer, delta, 0.25f, -0.25f, "123", Color.White); font.Draw(renderer, delta, 0.25f, -0.25f, "1234", Color.White);
font.Draw(renderer, delta, 0.25f, -0.35f, "abcd", Color.White);
renderer.End(); renderer.End();
} }