# OpenGL Fit To screen/window

## Recommended Posts

Hi, I was working on openGl for over 2 + years. Have some exposure to DirectX. Now due to client requirement, a CAD graphics engine needs to work on DirectX. I am able to resolve most of the grey areas with online resources and msdn examples. Thanks for posting online books. They are really useful. However, I was unable to find a way to fit a body (D3D mesh) on to screen. My requirement is as follows. Given: I have an axis aligned bounding box, bounding sphere encompassing the mesh being rendered. 1. I donot want to change the viewing direction. 2. I would like to modify the projection matrix and call render() once to manipulate the viewing area just wide enough to fit the mesh being rendered. {Fit to Screen}. 3. Would like to implement Zoom window. Any code snippets, links to webpages or ur suggestion will be welcome. Thanks.

##### Share on other sites
I don't think you want to change the projection matrix... ever. If you keep looking in the same direction, you will want to change the world matrix for the mesh to be "perfectly" viewable.
If this is the case, your world matrix will be depend on the size of your object, the direction of your view, and the projection matrix's field of view. The aspect ratio is important but can be neglected if the monitor is wider than it is tall. So do some math based on the field of view and the size of the object to determine the distance necessary. Then move that distance from the eye/camera position, along the view vector.

Hope that helps.

##### Share on other sites

In openGL, I am aware of Model_View matrix(4x4)and Projection_matrix(4x4). The effect of fit to screen is achived by panning and Zooming + or -. This combined camera position change can be achived by manipulating the projection matrix.
The World matric you are mentioning might at some stage be applied on the camera if I am not wrong.

My problem is how do I find this matrix which will produce the desired effect.
I have the math for OpenGl and somehow it does not seem to work in DirectX. The matrix in DirectX is the transpose of the representation in OpenGL. I have taken care of the most obvious pitfalls but it still does not work. If you think I may be missing something, then do let me know. If you have some example or code snippet, Please do share it with me.

## Create an account or sign in to comment

You need to be a member in order to leave a comment

## Create an account

Sign up for a new account in our community. It's easy!

Register a new account

• ## Partner Spotlight

• ### Forum Statistics

• Total Topics
627665
• Total Posts
2978529
• ### Similar Content

• Both functions are available since 3.0, and I'm currently using glMapBuffer(), which works fine.
But, I was wondering if anyone has experienced advantage in using glMapBufferRange(), which allows to specify the range of the mapped buffer. Could this be only a safety measure or does it improve performance?
Note: I'm not asking about glBufferSubData()/glBufferData. Those two are irrelevant in this case.
• By xhcao
Before using void glBindImageTexture(    GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), does need to make sure that texture is completeness.
• By cebugdev
hi guys,
are there any books, link online or any other resources that discusses on how to build special effects such as magic, lightning, etc. in OpenGL? i mean, yeah most of them are using particles but im looking for resources specifically on how to manipulate the particles to look like an effect that can be use for games,. i did fire particle before, and I want to learn how to do the other 'magic' as well.
Like are there one book or link(cant find in google) that atleast featured how to make different particle effects in OpenGL (or DirectX)? If there is no one stop shop for it, maybe ill just look for some tips on how to make a particle engine that is flexible enough to enable me to design different effects/magic
let me know if you guys have recommendations.
Thank you in advance!
• By dud3
How do we rotate the camera around x axis 360 degrees, without having the strange effect as in my video below?
Mine behaves exactly the same way spherical coordinates would, I'm using euler angles.
Tried googling, but couldn't find a proper answer, guessing I don't know what exactly to google for, googled 'rotate 360 around x axis', got no proper answers.

References:
Code: https://pastebin.com/Hcshj3FQ
The video shows the difference between blender and my rotation:

• By Defend
I've had a Google around for this but haven't yet found some solid advice. There is a lot of "it depends", but I'm not sure on what.
My question is what's a good rule of thumb to follow when it comes to creating/using VBOs & VAOs? As in, when should I use multiple or when should I not? My understanding so far is that if I need a new VBO, then I need a new VAO. So when it comes to rendering multiple objects I can either:
* make lots of VAO/VBO pairs and flip through them to render different objects, or
* make one big VBO and jump around its memory to render different objects.
I also understand that if I need to render objects with different vertex attributes, then a new VAO is necessary in this case.
If that "it depends" really is quite variable, what's best for a beginner with OpenGL, assuming that better approaches can be learnt later with better understanding?

• 10
• 10
• 12
• 22
• 13