C# OpenGL某些顶点缓冲区未渲染

C# OpenGL某些顶点缓冲区未渲染,c#,opengl,voxel,C#,Opengl,Voxel,我在构建基于体素的游戏时遇到了一个奇怪的错误。这段视频最好地展示了正在发生的事情: 我用C#创建这个游戏,用一个单独的库管理OpenGL绑定(OpenGLContext) 地图分为32 x 32 x 32体素的块,每个块通过单独的glDrawArrays调用(ctx.DrawArrays)绘制: 但是,在整个地图中只有两个块拒绝绘制,位置为(0,0,4)和(1,0,4) OpenGL和GLSL信息如下: public void Bind() { ctx.BindBuffer(Buffer

我在构建基于体素的游戏时遇到了一个奇怪的错误。这段视频最好地展示了正在发生的事情:

我用C#创建这个游戏,用一个单独的库管理OpenGL绑定(OpenGLContext)

地图分为32 x 32 x 32体素的块,每个块通过单独的glDrawArrays调用(ctx.DrawArrays)绘制:

但是,在整个地图中只有两个块拒绝绘制,位置为(0,0,4)和(1,0,4)

OpenGL和GLSL信息如下:

public void Bind()
{
    ctx.BindBuffer(BufferID.Array, _bufferHandle);
    ctx.BindVertexArray(_arrayHandle);

    if (_used > 0 && _dirty)
    {
        unsafe
        {
            // _data is an array of BlockVertex, which contains a Vector3 (3 floats) for the vertex position and a uint for the vertex colour
            fixed (BlockVertex* p = _data)
            {
                 ctx.BufferData(BufferID.Array, (IntPtr)(_used * Marshal.SizeOf(typeof(BlockVertex))), (IntPtr)p, BufferUsage.StaticDraw);
            }
        }
        _dirty = false;
    }
}
OpenGL Version: 4.5.13521 Compatibility Profile Context 24.20.11016.4
ShadingLanguageVersion: 4.50
OpenGL Renderer: Radeon RX 580 Series
OpenGL Vendor: ATI Technologies Inc.

任何帮助都将不胜感激。

在初始化顶点缓冲区和每次glDrawArrays调用后,通过解除VBO和VAO的绑定解决了这一问题。

Oops,习惯。谢谢,请加一个。
OpenGL Version: 4.5.13521 Compatibility Profile Context 24.20.11016.4
ShadingLanguageVersion: 4.50
OpenGL Renderer: Radeon RX 580 Series
OpenGL Vendor: ATI Technologies Inc.