2012-02-17 83 views
3

我想呈現2D圖像。要做到這一點,我把所有東西都放大並轉化爲位置,中心位於我想要的位置。我需要旋轉中心周圍的二維座標,但是當我這樣做時,就好像有一些x座標參與,因爲圖像奇怪地變平了。下面是代碼:GLSL 2D旋轉不起作用

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;