2013-01-09 24 views
0

我的程序崩溃时,我加入这行代码:有什么不对我的Android的OpenGL shader代码

uniform short colors[262144][3]; 

多少事我做错了吗?

  1. 你可以在着色器中使用短裤吗?
  2. 你可以在着色器中使用二维数组吗?
  3. 阵列太大了吗?
  4. 我的声明语法不正确吗?

我想在一个数组这样进入每个像素的片段着色器传递,但现在我只是看到,如果这行会的工作和我的程序崩溃。

回答

2

您不能在GLSL中使用多维数组,也不能使用短裤。

你可以模仿一个多维数组这样虽然的功能:

uniform float colors[50*3]; 

// Then access it like this 

float t = colors[row * 50 + column]; 

我可以想象你要发送的数据太多为好,我会使用一个纹理或者亲自传递大量数据代替缓冲区。

这是一个很好的答案,它解释了这些方法https://stackoverflow.com/a/7958008/139927