this is probably a stupid question, simple math, or something else, i am not sure.
What i have is a window with a small 3D scene (thats just 2 models rendered) in opengl. It starts as a window in 1024x768, thats cool. Then i resize the window (maximize it), and my handler does on resizing the following:
void onResize(GLFWwindow* window, int width, int height){
//This is my projection-matrix which gets multiplicated with the model and viewmatrix, the usual stuff.
Projection = glm::perspective(45.0f, (float)width/(float)height, 0.1f, 100.0f);
glViewport(0, 0, width, height);
}
and it works great. Nothing stretched, everything in the correct resolution. But: It just draws everything bigger. So if i would resize my window from, lets say, 500x500 to 1000x1000 it would just draw it twice as big (in both dimensions), but what i would like to have is, that it does not draws it bigger, but just draws “more” of the scene around. You understand what i mean? So if you look through a hole in a piece of paper, and then just remove the paper, you don’t see the exact same things bigger, but you see actually more around you.
What i actually tried is, remove one of the both lines in the onResize function, but this does more harm then help.
My guess is, that its just a matrix i have to set up correctly or a gl-call i have to do but i’m clueless since the glm::perspective does not take any size-arguments (just the aspect,ratio) and glViewport seems to just set up the screen-area i can draw in but has nothing to do with the actual drawing.
[QUOTE=tkausl;1264543]
and glViewport seems to just set up the screen-area i can draw in but has nothing to do with the actual drawing.[/QUOTE]
glViewport() sets the portion of the window which is mapped to X and Y coordinates of the clip space. Enlarging the viewport while keeping all other factors (e.g. the projection matrix) constant will enlarge the rendered image).
If you want a larger window to result in a larger view angle, you could just calculate the appropriate view angle and aspect ratio based upon the window dimensions, but it’s probably easier to use glm::frustum() instead. glm::perspective() is effectively just a convenience wrapper; any glm::perspective() call can be translated to an equivalent glm::frustum() call, i.e.
where [var]size[/var] is the window size corresponding to a 90° view angle (±45°).[/QUOTE]
Can you clarify that the fovy means field of view on Y axis/plane and not the usually implied X axis/plane which is usually the case.