Как убедиться, что плоскость идеально заполняет область просмотра в OpenGL ES - PullRequest
3 голосов
/ 25 января 2011

Я пытаюсь создать плоскую плоскость так, чтобы она идеально заполняла область просмотра в приложении OpenGL ES. Я могу добиться этого эффекта, создав плоскость и затем экспериментально перемещая ее вперед и назад, пока не получу нужный эффект, но я уверен, что должна быть возможность точно определить, как далеко от камеры она должна быть. Буду рад любым указателям!

Мне нужно быть точным, потому что к плоскости применена текстура, которую я хочу заполнить в окне, а не обрезать вообще.

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 января 2011

Используйте glFrustum вместо gluPerspective, чтобы установить перспективную проекцию. С glFrustum вы определяете проекцию в терминах плоскости, которую хотите отобразить заполнением области просмотра. Псевдокод:

aspect = win.width/win.height
bt = tan( fov/2 ) 
lr = bt * aspect

glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glFrustum( -lr * zclip.near,
            lr * zclip.near,
           -bt * zclip.near,
            bt * zclip.near,
            zclip.near, zclip.far)

glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

vertices = [
    (-lr * planedist, -bt * planedist, -planedist),
    ( lr * planedist, -bt * planedist, -planedist),
    ( lr * planedist,  bt * planedist, -planedist),
    (-lr * planedist,  bt * planedist, -planedist)
]
draw_vertices(vertices)
0 голосов
/ 25 января 2011

Проецирование лучей через углы экрана / области просмотра на плоскость должно дать правильные вершины для углов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...