Я пытаюсь превратить массив с плавающей запятой в массив vector2, поскольку массив с плавающей запятой — единственный массив, который я могу передать из кода Java в шейдер. Например, я превращаю float 3.8 в vec2 (3,8). Но это довольно неважно. Настоящая проблема в том, что шейдер перестает работать при добавлении определенной строки в цикл for. Вот мой код:
attribute vec4 a_color;
attribute vec3 a_position;
attribute vec2 a_texCoord0;
uniform float a_tileCoords[144];
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoord0;
varying vec2 v_tileCoords[144];
int length = 144;
void main(){
v_color = a_color;
v_texCoord0 = a_texCoord0;
for(int i = 0; i < length; i++){
int x = int(a_tileCoords[i]);
int y = int((a_tileCoords[i] - int(a_tileCoords[i])) * 10);
v_tileCoords[i] = vec2(x,y);
}
gl_Position = u_projTrans * vec4(a_position + vec3(0, 1, 0), 1.);
}
Речь идет об этой строке:
v_tileCoords[i] = vec2(x,y);
Когда я удаляю эту строку из цикла for, шейдер снова работает (текстура рисуется). Но я, конечно, хочу, чтобы эта строка работала. Итак, вопрос к вам: что я мог сделать неправильно, или это вообще возможно, чего я хочу достичь?