2012-02-17 19 views
3

2D画像をレンダリングしたい。これを行うために、私はそれが必要な場所にあるセンターを使ってすべてのものをスケールし、位置に変換します。私は中心の周りの2D座標を回転する必要がありますが、私はこれを行うときには、画像が奇妙に平坦化されているので、いくつかのx座標が含まれているかのようになります。ここでは、コードは次のようになります。ここではGLSL 2D Rotation not working

attribute vec4 vPosition; 
attribute vec2 a_texCoord; 
varying vec2 v_texCoord; 
uniform vec2 scale; 
uniform vec2 trans; 
uniform float move_down; 
void main(){ 
    gl_Position = vPosition; 
    gl_Position.x *= scale.x; 
    gl_Position.y *= scale.y; 
    gl_Position.x += trans.x; 
    gl_Position.y += trans.y - move_down; 
    gl_Position.x *= 2.0; 
    gl_Position.y *= 2.0; 
    gl_Position.x -= 1.0; 
    gl_Position.y -= 1.0; 
    gl_Position.x *= 0.2; //For visual testing only 
    gl_Position.y *= 0.2; //Same 
    gl_Position.x = cos(1.0)*gl_Position.x - sin(1.0)*gl_Position.y; 
    gl_Position.y = sin(1.0)*gl_Position.x + cos(1.0)*gl_Position.y; 
    v_texCoord = a_texCoord; 
} 

画像が

Images are cropped down

そして、ここでは、回転した画像は、1.0ラジアンである...回転ラインなしで...

enter image description here

単純な2D回転である必要があるため、明らかに問題があります。私が90度すると、イメージは完全に消えます。

Android用OpenGL-ES 2を削除しました。

これに感謝します。

編集:私は周りのベクトル...間違った方法の後に行列を乗算して

mat4 RotationMatrix = mat4(cos(1.0), -sin(1.0), 0.0, 0.0, 
           sin(1.0), cos(1.0), 0.0, 0.0, 
           0.0,   0.0, 1.0, 0.0, 
           0.0,   0.0, 0.0, 1.0); 
    gl_Position *= RotationMatrix; 

答えて

1

:私も同じ問題でこれを試してみました。マトリックスは次のようにして機能します:

gl_Position = RotationMatrix * Position;