如何在OpenGL中进行透视转换?

时间:2010-08-02 10:01:31

标签: opengl glut

如果我有像这样的共同风格透视变换矩阵

/ focus    0    cx \
|  0     focus  cy |
\  0       0     1 /

如何设置glFrustum或gluPerspective的参数以获得正确的转换

例如:

glFrustum ( -cx, screenWidth - cx, -cy, screenHeight - cy, focus, focus + 1000)
gluLookAt( 0.0, 0.0, -focus,   0.0, 0.0, 0.0,   0.0, 1.0, 0.0);

不要创建正确的转换=(

2 个答案:

答案 0 :(得分:2)

我做到了! =)也许有人会有用

glFrustum( -znear*cx / fx, znear*(w - cx) / fx,
           -znear*cy / fy, znear*(h - cy) / fy, 
            znear, zfar);

答案 1 :(得分:1)

glMatrixMode(GL_PROJECTION)
glFrustum ( 0, screenWidth ,0, screenHeight, focus, focus + 1000)
glMatrixMode(GL_MODELVIEW)
glLookAt(...)

但是给定矩阵不是openGL预期的4D变换矩阵;你应该看看http://www.opengl.org/sdk/docs/man/xhtml/glFrustum.xml

你正在将你的近剪裁平面设置在“焦点”,所以任何关闭的东西都会被剪掉!你应该选择一个更合适的价值,比如1.0。焦点+ 1000有意义,但