Exemple #1
0
        public VertexArray(Shader shader,
                           VertexList vertexes,
                           IList <uint> idxs     = null,
                           PrimitiveType prim    = PrimitiveType.Triangles,
                           BufferUsageHint usage = BufferUsageHint.StaticDraw)
        {
            Log.Assert(shader != null);
            Log.Assert(vertexes != null);

            //Vertexes = vertexes;
            Layout          = vertexes.Layout;
            indices         = idxs;
            usageHint       = usage;
            primitive       = prim;
            NumberOfIndices = indices.Count;


            vao = GL.GenVertexArray();
            GL.BindVertexArray(vao);
            buffer = GL.GenBuffer();
            GL.BindBuffer(BufferTarget.ArrayBuffer, buffer);
            indexBuffer = GL.GenBuffer();
            GL.BindBuffer(BufferTarget.ElementArrayBuffer, indexBuffer);
            AddVertexesToBuffer(vertexes);
            AddIndicesToBuffer(indices);
            SetupVertexPointers(shader, vertexes);
            // Unbinding the buffer *does not* alter the state of the vertex array object.
            // The association between buffer and vao is made on the GL.VertexAttribPointer() call.
            GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
            // Except for ElementArrayBuffer's, OF COURSE.(?)
            //GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
            GL.BindVertexArray(0);
        }
Exemple #2
0
 public VertexList(VertexLayout layout)
 {
     Layout   = layout;
     Vertexes = new List <float>();
 }