コード例 #1
0
        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);
        }
コード例 #2
0
        public unsafe void Flush()
        {
            if (buffer.Size == 0)
            {
                return;
            }

            primitiveShader.Apply();
            primitiveShader.SetUniform("mvp", camera.ViewProjection);

            glDrawElements(mode, buffer.Flush(), GL_UNSIGNED_SHORT, null);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }