2017-07-12 4 views
1

Ich versuche, ein Float-Array in ein Vektor2-Array zu verwandeln, da ein Float-Array das einzige Array ist, das ich vom Java-Code zum Shader übergeben kann. Ich drehe zum Beispiel float 3.8 in vec2 (3,8). Aber das ist ziemlich irrelevant. Das eigentliche Problem ist, dass der Shader beim Hinzufügen einer bestimmten Zeile in der for-Schleife nicht mehr funktioniert. Hier ist mein Code:Seltsame dynamische Iterationsfehler im OpenGL-Shader

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.); 
} 

Es geht um diese Linie:

v_tileCoords[i] = vec2(x,y); 

Wenn ich diese Zeile entfernen von der for-Schleife der Shader funktioniert wieder (die Textur gezogen wird.) Aber ich will diese Linie arbeiten Na sicher. Die Frage für Sie ist also: Was hätte ich falsch machen können, oder ist das überhaupt möglich, was ich erreichen möchte?

Vielen Dank für das Lesen meiner Frage.

+3

Ihr Design (144 Variation 'vec2's) mir scheint nicht richtig. – HolyBlackCat

+1

Was möchten Sie erreichen? Scheint ein XY-Problem zu sein. – Rabbid76

+0

Ich möchte, dass das Float-Array, das ich an den Shader übergeben habe, in ein Vektor2-Array umgewandelt wird. –

Antwort

Verwandte Themen