OpenGL着色器和常量

3

我需要在我的GLSL几何着色器中访问一堆常量值。我尝试了以下方法:

const int lookup[HUGE_NUMBER] = int[HUGE_NUMBER](1,32,...)

这对某些硬件有效。在ATI卡上,我收到了警告,说我的几何着色器的大小可能会导致性能不佳(听起来很合理)。在其他卡片(NV)上,着色器无法链接,因为内存不足。定义常量数组似乎是一种不受支持的黑客方法。
那么,该怎么办呢?我已经读到了DirectX管道中的“常量缓冲区”。有类似的东西吗?还是我必须使用纹理?

4
你有不使用纹理的理由吗?它们被设计为GPU首选的查找表。 - Ben Voigt
1个回答

5
您可以至少选择以下任意一种接口:
  1. 纹理
  2. 统一缓冲对象
  3. 纹理缓冲区

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接