2011-05-04 108 views
2

有没有一种方法可以在OpenGL ES中不使用矩阵来包含纵横比修正?在OpenGL ES 2.0中进行缩放和旋转

我正在写一个简单的着色器来旋转纹理。

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

但问题是,旋转时图像变得歪斜。在正常的openGL中,我们使用了类似gluPerspective(fov,(float)windowWidth /(float)windowHeight,zNear,zFar)的东西;
我如何做着色器一样?
注:我不想使用矩阵。

回答

2

在渲染对象的几何图形中包含纵横比修正?我在我的字体渲染工具中这样做了,每个矩形中的vert的位置通过屏幕的高宽比来校正,是的,我知道它更好更容易使用矩阵修复,但是当我编写这个工具时我并不知道它,工作得很好:)

+0

你有一些示例代码,你可以分享吗? – SKJ 2011-05-06 06:50:29

0

只要改变旋转矩阵乘法顺序:

a_pos.xy = rotZ * a_position.xy;