public unsafe void Flush() { if (buffer.BufferSize == 0) { return; } Shader shader; // If a custom shader is used, it's assumed to only apply to the current batch of primitives. if (customShader != null) { shader = customShader; customShader = null; } else { shader = defaultShader; } shader.Apply(); shader.SetUniform("mvp", camera.ViewProjection); glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null); }
public unsafe void Flush() { if (buffer.Size == 0) { return; } primitiveShader.Apply(); primitiveShader.SetUniform("mvp", camera.ViewProjection); glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null); }
public unsafe void Flush() { if (buffer.Size == 0) { return; } shader.Apply(); shader.SetUniform("mvp", camera.ViewProjection); glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null); Statistics.Increment(RenderKeys.DrawCalls); }
public override unsafe void Draw(T item, mat4?vp) { if (vp != null) { PrepareShader(item, vp.Value); } if (buffer.BufferSize > 0) { buffer.Flush(); } var handle = item.Mesh.Handle; glDrawElementsBaseVertex(GL_TRIANGLES, (uint)handle.Count, GL_UNSIGNED_SHORT, (void *)handle.Offset, handle.BaseVertex); }