我正在尝试创建一个平面,以使其完美填充OpenGL ES应用程序中的视口。我可以通过创建平面,然后实验性地将其前后移动,直到获得正确的效果,来实现这种效果,但是我敢肯定,必须有可能精确计算出它应该与相机相距多远。我欢迎任何指点!

我需要保持准确,因为飞机上已应用了纹理,我想将其填充到窗口中而不要完全被裁剪。

谢谢!

最佳答案

使用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)

关于opengl-es - 如何确保平面完美填充OpenGL ES中的视口(viewport),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4792952/

10-12 01:38