Example #1
0
        public Mesh(BufferUsageHint usageHint, int numArrayBuffers)
        {
            BufferUsage = usageHint;
            BeginMode   = BeginMode.Triangles;

            VAO = GManager.GenVertexArray();
            ArrayBufferObjects = new BufferObject[numArrayBuffers];
        }
Example #2
0
        public SpriteInstanceBuffer()
        {
            VAO = GManager.GenVertexArray();
            GL.BindVertexArray(VAO);

            float[] vertexData = new float[]
            {
                -0.5f, -0.5f,
                0.5f, -0.5f,
                -0.5f, 0.5f,
                0.5f, 0.5f
            };

            int floatSize = sizeof(float);

            // Setup buffers
            VertexBuffer = GManager.GenBuffer();
            GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBuffer);
            GL.BufferData(BufferTarget.ArrayBuffer, vertexData.Length * floatSize, vertexData, BufferUsageHint.StaticDraw);
            GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);

            PositionBuffer = GManager.GenBuffer();
            GL.BindBuffer(BufferTarget.ArrayBuffer, PositionBuffer);
            GL.BufferData(BufferTarget.ArrayBuffer, new IntPtr(MaxSprites * 2 * floatSize), IntPtr.Zero, BufferUsageHint.StreamDraw);
            GL.VertexAttribPointer(1, 2, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);

            ColorBuffer = GManager.GenBuffer();
            GL.BindBuffer(BufferTarget.ArrayBuffer, ColorBuffer);
            GL.BufferData(BufferTarget.ArrayBuffer, new IntPtr(MaxSprites * 4 * sizeof(byte)), IntPtr.Zero, BufferUsageHint.StreamDraw);
            GL.VertexAttribPointer(2, 4, VertexAttribPointerType.UnsignedByte, true, 0, IntPtr.Zero);

            OrientationBuffer = GManager.GenBuffer();
            GL.BindBuffer(BufferTarget.ArrayBuffer, OrientationBuffer);
            GL.BufferData(BufferTarget.ArrayBuffer, new IntPtr(MaxSprites * 3 * floatSize), IntPtr.Zero, BufferUsageHint.StreamDraw);
            GL.VertexAttribPointer(3, 3, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);

            GL.BindVertexArray(0);
        }