如何确保平面完美填充OpenGL ES中的视口

时间:2011-01-25 11:28:56

标签: opengl-es

我正在尝试创建一个平面,以便在OpenGL ES应用程序中完美填充视口。我可以通过创建平面然后通过实验方式向前和向后移动直到我得到正确的效果来实现这种效果,但我确信必须能够确切地确定它应该离相机有多远。我欢迎任何指示!

我需要准确,因为飞机上有一个纹理,我想填充窗口而不会被剪裁。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

通过屏幕/视口角投影光线到您的平面上应该为角点提供正确的顶点。