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); }
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; }
public virtual void OpenGL_GlBegin(OpenGL.DeviceContext ctx, OpenGL.PrimitiveType mode) { }