private void Generate() { _shader = ShaderManager.GetOrCreateShader("slab_block", Shaders.slab_vertex, Shaders.slab_fragment); foreach (var face in BlockFaceMethods.All) { var vao = BlockFaceVertices.CreateVao(face, SlabHeight); vao.Bind(); var vbo = new VertexBufferObject(); vao.LinkBuffer(vbo); vbo.Bind(BufferTarget.ArrayBuffer); vbo.SetData(BufferTarget.ArrayBuffer, MaxFaces * InstanceFloatDataLength, BufferUsageHint.StreamDraw); var builder = new AttributePointerBuilder(vao, InstanceDataLength, 3); builder.AddPointer(3, true); builder.AddPointer(1, true); builder.AddPointer(1, true); builder.AddPointer(1, true); builder.AddPointer(1, true); builder.AddPointer(1, true); VertexBufferObject.Unbind(BufferTarget.ArrayBuffer); VertexArrayObject.Unbind(); var i = (int)face; _vaos[i] = vao; _dataBuffers[i] = vbo; var mapper = _mappers[i]; mapper.Vao = vao; mapper.Vbo = vbo; } }
private static VertexArrayObject LoadVao() { var vao = new VertexArrayObject(); var vbo = new VertexBufferObject(); vao.Bind(); vbo.Bind(BufferTarget.ArrayBuffer); vao.LinkBuffer(vbo); vbo.SetData(BufferTarget.ArrayBuffer, Vertices, BufferUsageHint.StaticDraw); var builder = new AttributePointerBuilder(vao, 3, 0); builder.AddPointer(3, false); VertexBufferObject.Unbind(BufferTarget.ArrayBuffer); VertexArrayObject.Unbind(); return(vao); }
private void Generate() { _shader = ShaderManager.GetOrCreateShader("cubic_block", Shaders.block_vertex, Shaders.block_fragment); _vao = new VertexArrayObject(GenTransformedVertices(), Indices); _vao.Bind(); _dataBuffer = new VertexBufferObject(); _vao.LinkBuffer(_dataBuffer); _dataBuffer.Bind(BufferTarget.ArrayBuffer); _dataBuffer.SetData(BufferTarget.ArrayBuffer, MaxBlocks * InstanceFloatDataLength, BufferUsageHint.StreamDraw); var builder = new AttributePointerBuilder(_vao, InstanceDataLength, 3); builder.AddPointer(3, true); builder.AddPointer(1, true); builder.AddPointer(1, true); builder.AddPointer(1, true); builder.AddPointer(1, true); VertexBufferObject.Unbind(BufferTarget.ArrayBuffer); VertexArrayObject.Unbind(); _mapper.Vao = _vao; _mapper.Vbo = _dataBuffer; }