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