我使用GL_ARB_shader_image_load_store编写了纹理的第一个mipmap级别。文档指出,在其他操作中使用此映像的内容之前,我需要调用glMemoryBarrier,以便适当地刷新缓存。
例如,在执行glTexSubImage2D操作之前,我需要发出GL_TEXTURE_UPDATE_BARRIER_BIT,在使用样例纹理的着色器发出绘图调用之前,我需要发出GL_TEXTURE_FETCH_BARRIER_BIT。
但是,在确保glGenerateMipmap使用最新的书面数据之前,需要设置哪些障碍?
发布于 2015-12-03 17:24:28
OpenGL 4.6规范澄清了这一点:
在执行此缩减之前所需的任何同步都将在
Generate*Mipmap命令本身内完成。
所以你不需要任何同步。如果您以任何方式将数据写入基本mipmap级别,glGenerateMipmap将执行足够的同步以使读取工作。
考虑到这一点,最好不要在渲染帧的过程中称其为“框架”。
以前的规范没有答案,尽管这个错误报告中的信息表明以前的实现正是这样做的。。
https://stackoverflow.com/questions/24693861
复制相似问题