//----------------------------------------------------------------------------------------- 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); }
//----------------------------------------------------------------------------------------- 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()); }