Как я могу сделать перспективное преобразование в OpenGL? - PullRequest
1 голос
/ 02 августа 2010

Если у меня есть общая матрица преобразования перспективы стиля, как это

/ 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 ]

2 голосов
/ 02 августа 2010

Я сделал это !!!=) Может кому-то это будет полезно

glFrustum( -znear*cx / fx, znear*(w - cx) / fx,
           -znear*cy / fy, znear*(h - cy) / fy, 
            znear, zfar);
1 голос
/ 02 августа 2010
glMatrixMode(GL_PROJECTION)
glFrustum ( 0, screenWidth ,0, screenHeight, focus, focus + 1000)
glMatrixMode(GL_MODELVIEW)
glLookAt(...)

Но данная матрица не является матрицей четырехмерного преобразования, как ожидается openGL;Вы должны проверить http://www.opengl.org/sdk/docs/man/xhtml/glFrustum.xml

И вы устанавливаете свою ближнюю плоскость отсечения на «фокус», поэтому все закрытое будет обрезано!Вы должны выбрать более приличное значение, например 1,0.Фокус + 1000 имеет смысл, хотя

...