OpenGL 3中的图像加载存储等价物

时间:2013-12-12 11:27:36

标签: opengl glsl

我的项目应该从glsl着色器的纹理中的任意/原子读写操作中受益匪浅。 Image加载存储扩展是我需要的。唯一的问题是,我的目标平台不支持OpenGL 4。 是否有OGL 3的扩展可以获得类似的结果?我的意思是,在碎片着色器中的某种纹理或共享缓冲区中的原子读/写操作。

1 个答案:

答案 0 :(得分:4)

Image Load Store,尤其是原子操作是必须由特定硬件功能备份的功能,这些功能与计算着色器中使用的功能非常相似。只有部分GL3硬件可以处理它,并且只能以有限的方式处理。

    自4.2以来
  1. Image Load Store在核心配置文件中,所以如果您的硬件(和驱动程序)能够使用OpenGL 4.2,那么您根本不需要任何扩展

  2. 如果您的硬件(和驱动程序)功能低于GL 4.2,但高于GL 3.0,则可以可能使用ARB_shader_image_load_store扩展名。

    • 引用:OpenGL 3.0 and GLSL 1.30 are required
    • 显然,并非所有3.0硬件(和驱动程序)都支持此扩展,因此在使用之前必须检查其支持
    • 我相信,大多数NVIDIA GL 3.3硬件支持它,但不支持AMD或Intel(这是我的主观观察;)。)。
  3. 如果您的硬件低于GL 4.2并且无法使用此扩展程序,那么您无法做任何事情。只是有一个替代的代码路径,纹理采样和渲染纹理,没有原子(我知道这是可能的,但没有“原子的巨大好处”),或只是向那些还没有升级他们的装备的用户报告错误。

  4. 希望它有所帮助。