【问题标题】:GLSL uniform variables equivalent in OpenCLOpenCL 中等效的 GLSL 统一变量
【发布时间】:2014-02-24 01:14:27
【问题描述】:

OpenCL 中与 GLSL 的统一变量等价的是什么?

在 OpenCL 术语中,统一变量位于 GPU 内存中的什么位置? 它们何时从主机传递到 GPU?

我知道答案可能取决于具体的 OpenGL 实现,但我想知道这是否有一些规则或合理的假设。

【问题讨论】:

    标签: opengl glsl opencl gpu gpgpu


    【解决方案1】:

    在 GLSL 中,可以从每个着色器阶段和实例以只读方式访问制服。因此它显示了相应 OpenCl 全局内存的行为。考虑到这些值的常量(您不能在着色器中修改它们),它尤其等于 OpenCL 的 __constant 内存。

    更多信息可以在这里找到: http://www.opengl.org/wiki/Uniform_(GLSL) 和这里: http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/constant.html

    由于优化的可能性,我更喜欢 __constant 内存解决方案。如果内核内存占用有足够的空间,一些 OpenCL 驱动程序可能会将这些 __constant 值直接刷新到快速本地或私有内存中。如果不这样做,全局内存(包含 __constant 内存)的内存控制器也能够在 __constant 部分上更快地工作,因为内核代码无法发出更新请求。

    调用glUniformXX时直接调用OpenGL中的uniform。

    考虑到您也可以创建统一的缓冲区对象。在这种情况下,访问由统一缓冲区绑定点控制。这类似于 OpenGL 中的纹理处理。关于 UBO 使用的更多信息可以在这里找到: http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/3490-2/

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多