我的项目应该大大受益于 glsl 着色器纹理中的任意/原子读写操作。图像加载存储扩展正是我所需要的。唯一的问题是,我的目标平台不支持 OpenGL 4。 OGL 3 是否有一个扩展可以达到类似的结果?我的意思是,来自片段着色器的纹理或共享缓冲区中的原子读/写操作。
最佳答案
Image Load Store而且,特别是原子操作是必须由特定硬件功能支持的功能,这与计算着色器中使用的功能非常相似。只有某些 GL3 硬件可以处理它,而且只能以有限的方式处理。
Image Load Store从 4.2 开始就在核心配置文件中,因此如果您的硬件(和驱动程序)支持 OpenGL 4.2,那么您根本不需要任何扩展
如果您的硬件(和驱动程序)功能低于 GL 4.2,但高于 GL 3.0,您可能可以使用
ARB_shader_image_load_store
扩展名。- quote:
需要 OpenGL 3.0 和 GLSL 1.30
- 显然,并非所有 3.0 硬件(和驱动程序)都支持此扩展,因此在使用之前必须检查其支持
- 我相信,大多数 NVIDIA GL 3.3 硬件都支持它,但 AMD 或 Intel 不支持(这是我的主观观察;))。
- quote:
如果您的硬件低于 GL 4.2 并且不支持此扩展,那么您实际上无能为力。只需有一个替代代码路径,其中包含纹理采样和渲染到纹理,并且没有原子(据我所知,这是可能的,但没有“原子的巨大好处”),或者只是向那些尚未升级其装备的用户报告错误。
希望有帮助。
关于opengl - OpenGL 3 中的图像加载存储等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542235/