0

当我添加这行代码时,我的程序崩溃了:

uniform short colors[262144][3];

我在这里做错了多少事情?

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

我正在尝试将这样的数组传递到每个像素片段着色器中,但现在我只是看看这条线是否有效并且我的程序崩溃了。

4

1 回答 1

2

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

您可以像这样模仿多维数组的功能:

uniform float colors[50*3];

// Then access it like this

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

我想你也想发送太多数据,我个人会使用纹理或缓冲区来传递那么多数据。

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

于 2013-01-10T01:10:53.217 回答