opengl 绘制部分为空的GL_ELEMENT_ARRAY_BUFFER是否有效?

kuarbcqp  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(132)

我创建了一个GL_ARRAY_BUFFERGL_ELEMENT_ARRAY_BUFFER,并用glBufferData(null在两者中分配空间),然后我将一些数据glBufferSubData()到缓冲区的某些部分,使某些部分(不仅仅是在最后)为空。然后我用glDrawElements()绘制整个GL_ELEMENT_ARRAY_BUFFER。允许某些部分为空吗?或者它有缺点吗?

6qfn3psc

6qfn3psc1#

没有所谓的“部分空”。那些字节存在并且它们有值。那些值要么是未定义的(又名:可以是任何值)或0,具体取决于您的驱动程序和创建上下文时可能使用的强大内存设置。
使用未定义的值可能没有帮助,因为它们可能会读取有意义的缓冲区数据,或者超过缓冲区的末尾,这可能会直接导致GPU崩溃。
所以基本上不要这样做。如果你告诉OpenGL读取一些数据,确保有有效的数据要读取。发出多个绘制命令从同一个缓冲区的子部分绘制没有什么错。绘制命令只是一个性能问题,如果你在它们之间进行状态更改。

相关问题