OpenGL着色器和常量

Hug*_*ugo 3 opengl shader constants glsl

我需要在我的GLSL几何着色器中访问一堆常量值.我这样试过:

const int lookup[HUGE_NUMBER] = int[HUGE_NUMBER](1,32,...)
Run Code Online (Sandbox Code Playgroud)

这适用于某些硬件.在ATI卡上我收到警告,我的几何着色器的大小可能会导致性能不佳(听起来合理).在其他卡(NV)上,着色器因内存不足而无法链接.定义常量数组似乎是一个不受支持的hack.

那么 - 要走的路是什么?我已经读过DirectX管道中的" 常量缓冲区 ".有类似的东西吗?或者我必须使用纹理?

kva*_*ark 5

您至少可以使用以下任何接口:

  1. 质地
  2. 统一缓冲对象
  3. 纹理缓冲区