2011-03-16 152 views
3

我需要訪問我的GLSL幾何着色器中的一堆常量值。我試過這樣:OpenGL着色器和常量

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

這對某些硬件有效。在ATI顯卡上,我收到警告說我的幾何着色器的尺寸可能會導致性能不佳(聽起來合理)。在其他卡(NV)上,由於內存不足,着色器不會鏈接。定義常量數組似乎是不受支持的破解。

那麼 - 要走的路是什麼?我讀過DirectX管道中的「常量緩衝區」。有什麼類似的嗎?或者我必須使用紋理?

+4

你有一個理由不使用紋理?它們被設計成GPU選擇表。 – 2011-03-16 21:13:01

回答

5

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

  1. 紋理
  2. 統一緩衝對象
  3. 紋理緩衝