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;
}
這裏是沒有旋轉線圖像...
這裏是1.0弧度旋轉圖像...
顯然有一個問題,因爲它應該是一個簡單的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;