Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to ensure that a plane perfectly fills the viewport in OpenGL ES

Tags:

opengl-es

I'm trying to create a flat plane such that it perfectly fills the viewport in an OpenGL ES application. I can achieve this effect by creating the plane and then experimentally moving it forwards and backwards until I get the right effect, but I'm certain that it must be possible to work out exactly how far away from the camera it should be. I would welcome any pointers!

I need to be accurate because the plane has a texture applied to it, which I want to fill the window and not be clipped at all.

Thanks!

like image 858
Paul Butcher Avatar asked Jan 31 '26 19:01

Paul Butcher


1 Answers

Use glFrustum instead of gluPerspective to set the perspective projection. With glFrustum you define the projection in terms of a plane you want to display viewport-filling. Pseudocode:

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)
like image 81
datenwolf Avatar answered Feb 02 '26 14:02

datenwolf



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!