Opengl GL\U映射\U失效\U范围\U位是否需要glInvalidateBufferSubData?

Opengl GL\U映射\U失效\U范围\U位是否需要glInvalidateBufferSubData?,opengl,Opengl,这可能是一个奇怪的问题,但不是我没有看到,就是没有注意到 我正在使用 glMapBufferRange(GL_数组_BUFFER,0,BufferSize,GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT | GL_MAP_INVALIDATE_RANGE_BIT) 文件规定: GL\u MAP\u INVALIDATE\u RANGE\u位表示 指定的范围可能会被丢弃。此范围内的数据为 未定义,后续写入的数据除外。无G

这可能是一个奇怪的问题,但不是我没有看到,就是没有注意到

我正在使用

glMapBufferRange(GL_数组_BUFFER,0,BufferSize,GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT | GL_MAP_INVALIDATE_RANGE_BIT

文件规定:

GL\u MAP\u INVALIDATE\u RANGE\u位表示 指定的范围可能会被丢弃。此范围内的数据为 未定义,后续写入的数据除外。无GL错误 如果后续总账操作访问未写入的数据,则生成,但 结果是未定义和系统错误(可能包括程序错误 终止)可能发生。此标志不能与组合使用 GL\U映射\U读取位

现在,这并没有告诉我它现在是自动完成的(我对此表示怀疑),还是需要一些手动触发器,比如glInvalidateBufferSubData


我看不出任何性能差异,所以我有点好奇。

使用该位会导致映射调用无效,而不是建议它;)

然而,如果您使用的是持久映射,那么指定该位就没有意义了。您只需要映射缓冲区一次,因为这就是使用持久映射的意义所在。使持久映射缓冲区无效,虽然合法,但实际上可能不会做任何事情