opengl glMapBuffer导致glDrawElementsInstanced失败,并出现GL_INVALID_OPERATION错误

h79rfbju  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(131)

我在Windows上使用glMapBuffer时遇到问题
下面的代码运行良好,并且渲染了场景

glBufferSubData(GL_ARRAY_BUFFER, from, to, bufferData)

但如果我尝试Map缓冲区并使用memcpy更改glBufferSubData,如下所示

mappedBuffer = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
memcpy(mappedBuffer, (char *)bufferData + from, to);

然后我得到这个错误

OpenGL error
Debug message (1000): glDrawElementsInstanced has generated an error (GL_INVALID_OPERATION)
Source: API
Type: Error
Severity: high

在macos中,这很好用,所以我想知道我是否真的犯了一个错误。
此外,我发现很奇怪的是,当调用glDrawElementsInstanced时会发生错误,而不是在调用glMapBuffer时失败。

ercv8c1e

ercv8c1e1#

我只是忘了在memcpy之后使用glUnmapBuffer,由于某些原因,在macos上不需要

相关问题