1 / 37
文档名称:

Qt OpenGL 教程.pdf

格式:pdf   大小:279KB   页数:37页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

Qt OpenGL 教程.pdf

上传人:橘子 2022/3/3 文件大小:279 KB

下载得到文件列表

Qt OpenGL 教程.pdf

相关文档

文档介绍

文档介绍:: .

这一行启用 smooth shading(阴影平滑)。阴影平滑通过多边形精细的混合色彩,并对外部光
进行平滑。我将在另一个教程中更详细的解释阴影平滑。
glClearColor( , , , );
这一行设置清除屏幕时所用的颜色。如果您对色彩的工作原理不清楚的话,我快速解释一下。
色彩值的范围从 到 。 代表最黑的情况, 就是最亮的情况。glClearColor 后的第
一个参数是红色,第二个是绿色,第三个是蓝色。最大值也是 ,代表特定颜色分量的最亮
情况。最后一个参数是 Alpha 值。当它用来清除屏幕的时候,我们不用关心第四个数字。现
在让它为 。我会用另一个教程来解释这个参数。
通过混合三种原色(红、绿、蓝),您可以得到不同的色彩。希望您在学校里学过这些。因
此,当您使用 glClearColor(, ,, ),您将用亮蓝色来清除屏幕。如果您用
glClearColor(, , , )的话,您将使用中红色来清除屏幕。不是最亮(),也不是最
暗()。要得到白色背景,您应该将所有的颜色设成最亮()。要黑色背景的话,您该将所
有的颜色设为最暗()。
glClearDepth( );
设置深度缓存。
glEnable( GL_DEPTH_TEST );
启用深度测试。
glDepthFunc( GL_LEQUAL );
所作深度测试的类型。上面这三行必须做的是关于 depthbuffer(深度缓存)的。将深度缓存设想为屏幕后面的层。
深度缓存不断的对物体进入屏幕内部有多深进行跟踪。我们本节的程序其实没有真正使用深
度缓存,但几乎所有在屏幕上显示 3D 场景 OpenGL 程序都使用深度缓存。它的排序决定那
个物体先画。这样您就不会将一个圆形后面的正方形画到圆形上来。深度缓存是 OpenGL
十分重要的部分。
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
真正精细的透视修正。这一行告诉 OpenGL 我们希望进行最好的透视修正。这会十分轻微的
影响性能。但使得透视图看起来好一点。
}
这个函数中,我们对 OpenGL 进行所有的设置。我们设置清除屏幕所用的颜色,打开深度缓
存,启用 smooth shading(阴影平滑),等等。这个例程直到 OpenGL 窗口创建之后才会被
调用。
void NeHeWidget::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
清楚屏幕和深度缓存。
glLoadIdentity();
重置当前的模型观察矩阵。
}
这个函数中包括了所有的绘图代码。任何您所想在屏幕上显示的东东都将在此段代码中出
现。以后的每个教程中我都会在例程的此处增加新的代码。如果您对 OpenGL 已经有所了
解的话,您可以在 glLoadIdentity()调用之后,函数返回之前,试着添加一些 OpenGL 代码来
创建基本的形。如果您是 OpenGL 新手,等着我的下个教程。目前我们所作的全部就是将屏
幕清除成我们前面所决定的颜色,清除深度缓存并且重置场景。我们仍没有绘制任何东东。
void NeHeWidget::resizeGL( int width, int height )
{
if ( height == 0 )
{
height = 1;
}
防止 height 为 0。
glViewport( 0, 0, (GLint)width