在着色器(使用 OpenGL ES 2.0)中,我想拥有一个动态大小的数组。
我可以声明一个固定大小的数组:
uniform vec2 vertexPositions[4];
但是现在我想将大小动态设置为点数,我将传递该点数。
在编译之前,我想过在着色器源中进行字符串替换,但是每次绘制不同的元素时都必须对其进行编译。这似乎是CPU密集型的。
典型的方法是将统一数组的大小调整到您希望使用的最大元素数,然后仅更新您实际使用的元素子集。然后,您可以将数组的有效大小作为单独的统一传递。
uniform vec2 arr[MAX_SIZE];
uniform int arr_size;