动态制服阵列(GLSL OpenGL ES 2.0)

时间:2017-02-01 14:55:07

标签: graphics opengl-es glsl

在着色器中(使用OpenGL ES 2.0)我希望拥有一个动态大小的数组。

我可以声明一个固定大小的数组:

uniform vec2 vertexPositions[4];

但是现在我想将大小动态设置为点数,我将通过。

我想在编译之前在着色器源中进行字符串替换,但是每次绘制不同的元素时都要编译它。这似乎是CPU密集型的。

1 个答案:

答案 0 :(得分:1)

典型的方法是将统一数组的大小调整为您希望使用的最大元素数,然后只更新您实际使用的子集。然后,您可以将数组的有效大小作为单独的统一传递。

uniform vec2 arr[MAX_SIZE];
uniform int arr_size;