C++ 在屏幕大小更改时保持几何体不变
我做了一些像这样的形状:C++ 在屏幕大小更改时保持几何体不变,c++,opengl,graphics,screen-resolution,C++,Opengl,Graphics,Screen Resolution,我做了一些像这样的形状: // Triangle glBegin(GL_TRIANGLES); glVertex3f(0.0,0.0,0); glVertex3f(1.0,0.0,0); glVertex3f(0.5,1.0,0); glEnd(); // Cube using GLUT glColor3f(0.0,0.0,1.0); glutSolidCube(.5); // Circle glPointSize(2); glColor3f(1.0,0.0,1.0)
// Triangle
glBegin(GL_TRIANGLES);
glVertex3f(0.0,0.0,0);
glVertex3f(1.0,0.0,0);
glVertex3f(0.5,1.0,0);
glEnd();
// Cube using GLUT
glColor3f(0.0,0.0,1.0);
glutSolidCube(.5);
// Circle
glPointSize(2);
glColor3f(1.0,0.0,1.0);
glBegin(GL_POINTS);
float radius = .75;
for( float theta = 0 ; theta < 360 ; theta+=.01 )
glVertex3f( radius * cos(theta), radius * sin(theta), 0 );
glEnd();
我知道我可以保持视口本身具有相同的宽度和高度,但这样会在侧面浪费大量空间
有什么解决办法吗
游戏开发者通常如何处理这个问题,设计不同分辨率的OpenGL游戏
旁白:我知道这不是现代的OpenGL,还有更好的圆制作方法。他们通过使用投影矩阵来解决这个问题,透视矩阵和正交投影传统上都有一种获得纵横比(宽/高)的方法然后用它来调整屏幕上的结果。他们用投影矩阵来解决这个问题,透视矩阵和正交投影传统上都有一种获得纵横比(宽度/高度)的方法,并用它来调整屏幕上的结果。他们用投影矩阵来解决这个问题,透视矩阵和正交投影传统上都有一种获得纵横比(宽度/高度)的方法,并使用它来调整屏幕上的结果。他们通过使用投影矩阵来解决这个问题,透视矩阵和正交投影传统上都有一种获得纵横比(宽度/高度)的方法然后用它来调整屏幕上的结果。您能详细说明一下吗?或者一个类似的链接也就足够了。你能详细说明一下吗?或者一个类似的链接也就足够了。你能详细说明一下吗?或者一个类似的链接也就足够了。你能详细说明一下吗?或者一个类似的链接也就足够了。
void DrawingSurface::resizeGL(int width, int height)
{
// Update the drawable area in case the widget area changes
glViewport(0, 0, (GLint)width, (GLint)height);
}