C++ opengl 对OpenGL中矩阵设置的初步认识

对OpenGL中矩阵设置的初步认识:
在入门级的代码里面,通常在初始化OpenGL中可以看到这样的代码:

void init(){
	glMatrixMode(GL_PROJECTION);
	gluPerspective(50.0f,800.0f/600.0f,0.1f,1000.0f);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

此处暂时只做初步认识,不做深入理解!

投影矩阵:
1.人的眼睛或者摄像机:看到的东西投影到摄像机上面(或者理解为视网膜上)就可以看到东西了;
2.投影:把3D空间里面的东西,变成2D的,显示到屏幕上的;
3.在视角里面,其实有近平面和远平面,也就是OpenGL里面,可以看到的,最近和最远的距离。在视野里面看到的东西都会投影到近平面里面;
4.在现实生活中视野都是像金字塔那种形状的,但在计算机中,他是正方体(但在OpenGL里面会有特定的算法,显示的时候和现实差不多的,用OpenGL就是以摄像机的形式来编程的)

暂时可以这样理解这些代码(非权威)
1.投影矩阵的作用就是为了把所描绘的物体投影到我们的视网膜上面;
2.模型视图矩阵就是为了放物体的!!!!

解释下上面的代码:
1.glMatrixMode(GL_PROJECTION)是设置当前的矩阵为投影矩阵;
2.gluPerspective是为当前的矩阵赋值,因为上一步设置当前矩阵为投影矩阵了,所以gluPerspective相当于为投影矩阵赋值;
3.设置模型视口矩阵模型视口矩阵的操作跟设置投影矩阵是一样的思路。glMatrixMode(GL_MODELVIEW)是设置当前的矩阵为模型视口矩;
4.glLoadIdentity是为当前的矩阵赋值,因为上一步设置当前矩阵为模型视口矩阵了,所以glLoadIdentity相当于为模型视口矩阵赋值。

因为新建一个OpenGL渲染RC后,里面的矩阵是未知的,所以要设置。绘制模型的时候,投影矩阵和模型视口矩阵是一定会参与运算的。

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81383118