我正在使用OpenGL渲染Voxel游戏中的块块。每个块都有其自己的顶点缓冲区,现有的渲染函数(已简化)如下:foreach (Chunk c in chunks){ glBindBuffer(BufferID.Array, c.handle); if (c.dirty) { glBufferData(BufferID.Array, ... , BufferUsage.StaticDraw); c.dirty = false; } // For position, normal, colour and UV glEnableVertexAttribArray(...); glVertexAttribPointer(...); glUseProgram(shader.Handle); glDrawArrays(DrawMode.TriangleStrip, 0, c.vertexBuffer.Length);}上面的代码有效,但是glEnableVertexAttribArray,glVertexAttribPointer和glUseProgram上的CPU使用率很高。我可以在循环开始之前调用这些函数,还是必须在每次glBindBuffer之后调用它们?
1 回答
- 1 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消