Пример #1
0
        static void DrawMesh(PrimitiveType PType, ShaderProgram Shader)
        {
            if (Shader == null)
            {
                throw new Exception("No shader bound for immediate mode drawing");
            }

            M.Material.Shader = Shader;
            M.PrimitiveType   = PType;
            M.Draw(Vector3.Zero, Vector3.One, Quaternion.Identity);
        }
Пример #2
0
 public StreamDisplayList(uint vertexSize, OpenGL.PrimitiveType primitiveType = OpenGL.PrimitiveType.Triangles, uint vertexBufferSize = 1024, uint indexBufferSize = 1024, ShaderPipeline pipeline = null, Core.VertexAttributeDescription[] vertexAttributes = null) : base(vertexSize, pipeline, vertexAttributes)
 {
     vertexArrayBuffer = new VertexArrayBuffer <T>(vertexSize, OpenGL.BufferUsage.StreamDraw, primitiveType);
     indexBuffer       = new IndexBuffer <T>(OpenGL.BufferUsage.StreamDraw);
     vertexArrayObject = new VertexArrayObject <T>(vertexArrayBuffer, this.pipeline, this.vertexAttributes);
     vertexArrayBuffer.Bind();
     indexBuffer.Bind();
     vertexArrayBuffer.CopyRawData(IntPtr.Zero, vertexSize * vertexBufferSize);
     indexBuffer.CopyRawData(IntPtr.Zero, sizeof(int) * indexBufferSize);
     indexBuffer.Unbind();
     vertexArrayBuffer.Unbind();
 }
        public StaticDisplayList(T[] vertices, int[] indices, uint vertexSize, OpenGL.PrimitiveType primitiveType = OpenGL.PrimitiveType.Triangles, ShaderPipeline pipeline = null, VertexAttributeDescription[] attributes = null) : base(vertexSize, pipeline, attributes)
        {
            if (vertices == null)
            {
                throw new ArgumentNullException(nameof(vertices));
            }
            if (indices == null)
            {
                throw new ArgumentNullException(nameof(indices));
            }

            vertexArrayBuffer = new VertexArrayBuffer <T>(vertexSize, OpenGL.BufferUsage.StaticDraw, primitiveType);
            indexBuffer       = new IndexBuffer <T>(OpenGL.BufferUsage.StaticDraw);
            vertexArrayObject = new VertexArrayObject <T>(vertexArrayBuffer, this.pipeline, vertexAttributes);
            vertexArrayBuffer.Bind();
            indexBuffer.Bind();
            vertexArrayBuffer.CopyData(vertices);
            indexBuffer.CopyData(indices);
            indexBuffer.Unbind();
            vertexArrayBuffer.Unbind();
            elementCount = indices.Length;
        }
 public DynamicDisplayList(uint vertexSize, OpenGL.PrimitiveType primitiveType = OpenGL.PrimitiveType.Triangles, ShaderPipeline pipeline = null, VertexAttributeDescription[] vertexAttributes = null) : base(vertexSize, pipeline, vertexAttributes)
 {
     vertexArrayBuffer = new VertexArrayBuffer <T>(vertexSize, OpenGL.BufferUsage.DynamicDraw, primitiveType);
     indexBuffer       = new IndexBuffer <T>(OpenGL.BufferUsage.DynamicDraw);
     vertexArrayObject = new VertexArrayObject <T>(vertexArrayBuffer, this.pipeline, this.vertexAttributes);
 }
 public BatchDisplayList(uint vertexSize, uint vertexBufferSize = DEFAULT_BUFFER_SIZE, OpenGL.PrimitiveType primitive = OpenGL.PrimitiveType.Triangles, ShaderPipeline pipeline = null, Core.VertexAttributeDescription[] vertexAttributes = null) : base(vertexSize, pipeline, vertexAttributes)
 {
     vertexArrayBuffer = new VertexArrayBuffer <T>(vertexSize, OpenGL.BufferUsage.StreamDraw, primitive);
     indexBuffer       = new IndexBuffer <T>(OpenGL.BufferUsage.DynamicDraw);
     vertexArrayObject = new VertexArrayObject <T>(vertexArrayBuffer, this.pipeline, this.vertexAttributes);
     vertexArrayBuffer.Bind();
     vertexArrayBuffer.CopyRawData(IntPtr.Zero, vertexSize * vertexBufferSize);
     vertexArrayBuffer.Unbind();
     currentVertexBufferSize = vertexBufferSize;
 }
Пример #6
0
 public virtual void OpenGL_GlBegin(OpenGL.DeviceContext ctx, OpenGL.PrimitiveType mode)
 {
 }