示例#1
0
        //-----------------------------------------------------------------------------------------
        private bool _InitBuffers()
        {
            GL.GenBuffers(Buffers.Count(), Buffers.Names);

            GL.BindBuffer(BufferTarget.ArrayBuffer, Buffers.Name(Buffers.Type.VERTEX));
            GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(sizeof(float) * 16),
                          ref _vectorData, BufferUsageHint.StaticDraw);
            GL.BindBuffer(BufferTarget.ArrayBuffer, 0);

            GL.BindBuffer(BufferTarget.AtomicCounterBuffer, Buffers.Name(Buffers.Type.ATOMIC_COUNTER));
            GL.BufferData(BufferTarget.AtomicCounterBuffer, (IntPtr)sizeof(uint),
                          IntPtr.Zero, BufferUsageHint.DynamicCopy);
            GL.BindBuffer(BufferTarget.AtomicCounterBuffer, 0);

            return(true);
        }
        //-----------------------------------------------------------------------------------------
        private bool _InitBuffers()
        {
            float[] vertexData = new float[]
            {
                // back
                -0.25f, 0.25f, -0.25f, -0.25f, -0.25f, -0.25f, 0.25f, -0.25f, -0.25f,
                0.25f, -0.25f, -0.25f, 0.25f, 0.25f, -0.25f, -0.25f, 0.25f, -0.25f,
                // right
                0.25f, -0.25f, -0.25f, 0.25f, -0.25f, 0.25f, 0.25f, 0.25f, -0.25f,
                0.25f, -0.25f, 0.25f, 0.25f, 0.25f, 0.25f, 0.25f, 0.25f, -0.25f,
                // front
                0.25f, -0.25f, 0.25f, -0.25f, -0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
                -0.25f, -0.25f, 0.25f, -0.25f, 0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
                // left
                -0.25f, -0.25f, 0.25f, -0.25f, -0.25f, -0.25f, -0.25f, 0.25f, 0.25f,
                -0.25f, -0.25f, -0.25f, -0.25f, 0.25f, -0.25f, -0.25f, 0.25f, 0.25f,
                // bottom
                -0.25f, -0.25f, 0.25f, 0.25f, -0.25f, 0.25f, 0.25f, -0.25f, -0.25f,
                0.25f, -0.25f, -0.25f, -0.25f, -0.25f, -0.25f, -0.25f, -0.25f, 0.25f,
                // top
                -0.25f, 0.25f, -0.25f, 0.25f, 0.25f, -0.25f, 0.25f, 0.25f, 0.25f,
                0.25f, 0.25f, 0.25f, -0.25f, 0.25f, 0.25f, -0.25f, 0.25f, -0.25f,
            };

            // Generate our vertext and uniform buffers
            GL.GenBuffers(Buffers.Count(), Buffers.Names);

            // Bind our vertext array and fill it with our vertex data
            GL.BindBuffer(BufferTarget.ArrayBuffer, Buffers.Name(Buffers.Type.VERTEX_ARRAY));
            GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(vertexData.Length * sizeof(float)),
                          vertexData, BufferUsageHint.StaticDraw);
            GL.BindBuffer(BufferTarget.ArrayBuffer, 0);

            // Bind our uniform buffer and intitalize it (zero-fill)
            GL.BindBuffer(BufferTarget.UniformBuffer, Buffers.Name(Buffers.Type.UNIFORM));
            GL.BufferData(BufferTarget.UniformBuffer, (IntPtr)(1024 * sizeof(float)),
                          IntPtr.Zero, BufferUsageHint.DynamicDraw);

            GL.BindBuffer(BufferTarget.UniformBuffer, 0);

            return(true);
        }
        //-----------------------------------------------------------------------------------------
        private bool InitBuffers()
        {
            int maxVertexAtomicCounterBuffers;
            int maxControlAtomicCounterBuffers;
            int maxEvaluationAtomicCounterBuffers;
            int maxGeometryAtomicCounterBuffers;
            int maxFragmentAtomicCounterBuffers;
            int maxCombinedAtomicCounterBuffers;

            GL.GetInteger((GetPName)All.MaxVertexAtomicCounterBuffers, out maxVertexAtomicCounterBuffers);
            GL.GetInteger((GetPName)All.MaxTessControlAtomicCounterBuffers, out maxControlAtomicCounterBuffers);
            GL.GetInteger((GetPName)All.MaxTessEvaluationAtomicCounterBuffers, out maxEvaluationAtomicCounterBuffers);
            GL.GetInteger((GetPName)All.MaxGeometryAtomicCounterBuffers, out maxGeometryAtomicCounterBuffers);
            GL.GetInteger((GetPName)All.MaxFragmentAtomicCounterBuffers, out maxFragmentAtomicCounterBuffers);
            GL.GetInteger((GetPName)All.MaxCombinedAtomicCounterBuffers, out maxCombinedAtomicCounterBuffers);

            GL.GenBuffers(Buffers.Count(), Buffers.Names);

            GL.BindBuffer(BufferTarget.UniformBuffer, Buffers.Name(Buffers.Type.TRANSFORM));
            GL.BufferData(BufferTarget.UniformBuffer, (IntPtr)(sizeof(float) * 16),
                          IntPtr.Zero, BufferUsageHint.DynamicDraw);
            GL.BindBuffer(BufferTarget.UniformBuffer, 0);

            GL.BindBuffer(BufferTarget.ElementArrayBuffer, Buffers.Name(Buffers.Type.ELEMENT));
            GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(sizeof(ushort) * _ElementData.Length),
                          _ElementData, BufferUsageHint.StaticDraw);
            GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);

            GL.BindBuffer(BufferTarget.ArrayBuffer, Buffers.Name(Buffers.Type.VERTEX));
            GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(sizeof(float) * 4 * _VectorData.Length),
                          _VectorData, BufferUsageHint.StaticDraw);
            GL.BindBuffer(BufferTarget.ArrayBuffer, 0);

            GL.BindBuffer(BufferTarget.AtomicCounterBuffer, Buffers.Name(Buffers.Type.ATOMIC_COUNTER));
            GL.BufferData(BufferTarget.AtomicCounterBuffer, (IntPtr)sizeof(uint),
                          IntPtr.Zero, BufferUsageHint.DynamicCopy);
            GL.BindBuffer(BufferTarget.AtomicCounterBuffer, 0);

            return(true);
        }
示例#4
0
 //-----------------------------------------------------------------------------------------
 protected override void OnUnload(EventArgs e)
 {
     GL.DeleteProgram(_shaderProgramName);
     GL.DeleteBuffers(Buffers.Count(), Buffers.Names);
     GL.DeleteVertexArrays(1, ref _vertexArrayName);
 }
 public int BuffersCount()
 {
     return(Buffers.Count());
 }