计算机图形学期末必考要点
第2章计算机图形系统 [11(1)电了枪发射电了束,经过聚焦在偏转系统控制下电了束轰击荧光屏,在荧光屏上 产生足够小的光点,光点称为像素(pixel)o (2)阴极射线管在水平和垂直方向单位长度上能识别的最大光点数称为分辨率,分辨率越 高,显示的画面越清晰。 [2] (1) CRT聚焦系统通过电场或磁场控制电子束,使电子束“变细”,保证轰击荧光屏时 产生的亮点足够小。为了提高显示系统的分辨率,聚焦系统是关键之一 (2)CRT加速电极加有正的高电压(达几万伏),使经过聚焦的电了束高速运动 (3)CRT偏转系统(山垂直偏转板和水平偏转板组成)偏转控制可以来用静电场,也可以 采用磁场,控制电了束在水平方向上和竖直方向上的偏转。最大偏转角度是衡量偏转系统性 能的最重要指标 (4)持续发光时间指的是电了束离开某点后,该点亮度值衰减到初始值的1 / 10所需的时 间。 【3】真彩色系统三个电子枪分别是三个通道,产生三色荧光点,具有24位面的帧缓冲存 储器,红、绿、蓝各8个位面,其值经数模转换控制红、绿、蓝电子枪的强度,每支电子枪 的强度有256(8位)个等级,则能显示256*256*25616兆种颜色,16兆种颜色也称作(24位) 真彩色。这种方法利用人们眼睛在超过一定距离后分辨力不高的特性,产生与直接混色法相 同的效果 [4] glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); //单缓存,RGB 窗口 /*以glutlnit的例行初始化函数 *其中glutlnitDisplayModef)定义显示方式 *参数是一个GLUT库里预定义的可能的布尔组合 * 指定颜色模式的预定义常量有 * 1 GLUT_RGBA或者GLUT_RGB指定一个RGBA窗口,这是一个默认的颜色模式。 * 2 GLUT_INDEX指定颜色索引模式。 * 选择缓冲区 * 1GLUT_SINGLE单缓冲区窗口 * 2GLUT_BUFFER双缓冲区窗口,这是产生流畅动画必须选的。 * 特殊的缓冲 * 1GLUT_ACCUM累积缓冲区 * 2GLUT_STENCIL模板缓冲区 *3 GLUT_DEPTH深度缓冲区。*/ 【5】/*glClear ()函数的作用是用当前缓冲区清除值,也就是glClearColor *或者 glClearDepth、glClearlndex、glClearStenciL glClearAccum 等函数所指定的值来清 除指定的缓冲区比如 * glClearColor (0.0, 0.0, 0.0, 0.0); * glClear (GL_COLOR_BUFFER_BIT); *第一条语句表示清除颜色设为黑色,第二条语句表示实际完成了把整个窗口清除为黑 色的任务 *glClear ()的唯一参数表示需要被清除的缓冲区 * GL_COLOR_BUFFER_BIT当前可写的颜色缓冲 * GL_DEPTH_BUFFER_BIT深度缓冲 * GL_ACCUM_BUFFER_BIT累积缓冲 * GL_STENCIL_BUFFER_BIT模板缓冲 *也可以使用gIDrawBuffer 一次清除多个颜色缓存* glClear GL_COLOR_BUFFER_BIT; 淤 glTranslatefO.Of, -20.Of, -40.Of 表示将当前图形向x轴平移0,向y轴平移-20,向z轴平移-40 glScaled10.0f, lO.Of, lO.Of 表示将当前图形沿x,y,z轴分别放大为原来的10倍 glRotatef-80.0f, 10.0f, l.Of, 0.0f 表示将当前图形沿方向向量-10,1,0顺时针旋转80度 glLoadldentity 将当前的用户坐标系的原点移到了屏幕中心类似于一个复位操作 【6】如果以顺时针绘制则是反面,逆时针绘制则是正面 在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边 形虽然是正面的,但被其他多边形所遮挡。如果将无法看见的多边形和可见的多边形同等对 待,无疑会降低我们处理图形的效率。在这种时候,可以将不必要的面剔除。 首先,使用glEnableGL_CULL_FACE;来启动剔除功能使用glDisableGL_CULL_FACE可以关 闭之 然后,使用glCullFace来进行剔除。 glCullFace的参数可以是GL_FRONT, GL_BACK或者GL_FRONT_AND_BACK,分别表示剔除正 面、剔除反面、剔除正反两面的多边形。 注意剔除功能只影响多边形,而对点和直线无影响。例如,使用 glCullFaceGL_FRONT_AND_BACK后,所有的多边形都将被剔除,所以看见的就只有点和直线。 [7]在OpenGL中实现双缓冲技术的一种简单方法 1. 在调用 glutlnitDisplayMode 函数时,开启 GLUT_DOUBLE,即 glutlnitDisplayModeGLUT_RGB I GLUT_DOUBLE;o这里将我们惯用的GLUT_SINGLE替换为GLUT_DOUBLE,意为要使用双缓 冲而非单缓冲。 2. 调用glutDisplayFuncdisplay注册回调函数时,在回调函数中所有绘制操作完成后调用 glutSwap Buffers交换两个缓冲区指针。 3. 调用glutldleFunc注册一个空闲时绘制操作函数,注册的这个函数再调用display函数。 【8】画圆的代码 1普通 const int n 1000; const GLfloat R 0.5f; const GLfloat Pi 3.1415926536f; void DrawCircle int i; glBeginGL_LINE_LOOP; fori0; in; i glVertex2fR*cos2*Pi/n*i, R*sin2*Pi/n*i; glEnd; gl; void myDisplay glClearGL_COLOR_BUFFER_BIT; DrawCirclef; 2中点画圆法 void CirclePointsint xjnt yjnt cx,int cy //cx,cy为圆心坐标 PlotPixelxcx, ycy; PlotPixelycx, xcy; PlotPixel-xcx, ycy; PlotPixelycx, -xcy; PI ot Pixe I xcx 广 ycy; PlotPixel-ycx, xcy; PlotPixel-xcx, ・ycy; PlotPixel-ycx, -xcy; }