开发者

Scale and rotate in OpenGL ES 2.0

Is there a way to include aspect ratio correction without using matrices in OpenGL ES?

I am writing a simple shader to rotate a texture.

void main()  
{  
    mat2 rotX = mat2(cosA, sinA, -sinA, cosA);  
    vec4 a_pos = a_position;
    a_pos.xy = a_position.xy * rotZ;  
    gl_Position = a_pos;  
}
开发者_开发百科

But the problem is that the image is getting skewed when rotating.

In normal openGL, we use something like gluPerspective(fov, (float)windowWidth/(float)windowHeight, zNear, zFar);

How do i do the same with shaders?

Note: I'd prefer not using a matrix.


Include aspect ratio fix in geometry of rendered object? I did so in my font rendering tool, position of verts in each rect is corrected by aspect ratio of screen, and yes i know that its better and easier do use matrix fix but i didnt know it when i was writing this tool, and it works fine:)


You can manually translate a code of GluPerspective to shader: http://www.opengl.org/wiki/GluPerspective_code

But it is not efficient to calcuelte this matrix for each vertex. So you can manually calculate it for your device screen. Look at these posts


Just change the matrix multiplication order for rotation:

a_pos.xy = rotZ * a_position.xy;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜