我试图将float数组转换为vector2数组,因为float数组是我可以从Java代码传递到着色器的唯一数组。我将例如浮动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循环中删除该行时,着色器再次起作用(纹理被绘制。)但我希望这一行能够正常工作。所以问题是:我可能做错了什么,或者这甚至可能实现我想要实现的目标?
感谢您阅读我的问题。