ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:55.59KB ,
资源ID:24937363      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24937363.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(杭电《实时三维图形绘制》OpenGL课复习提纲试题展示及参考答案资料.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

杭电《实时三维图形绘制》OpenGL课复习提纲试题展示及参考答案资料.docx

1、杭电实时三维图形绘制OpenGL课复习提纲试题展示及参考答案资料2016 学年杭州电子科技大学及时三维图像绘制考试红色标志表示考到了,都是简答题,有超纲的(老师给的纲要)超纲题:【1】写出起码三种 OpenGL 矩阵货仓,并说明作用?【2】请完好写出用 glut 和 OpenGL 编写的程序: 绘制一个平面正三角形, 使它绕着过它中心的垂直于平面的轴自动旋转。1、OpenGL 中能衬着的基本元素是什么? GLU 能够衬着哪些基本元素?答: OPENGL 基本元素:GL_POINTS、GL_LINES 、 GL_LINE_STRIP 、GL_LINE_LOOPGL_TRIANGLES 、GL_T

2、RIANGLE_STRIP 、GL_TRIANGLE_FANGL_QUADS 、GL_QUAD_STRIP 、GL_POLYGONGLU 基本元素 :NURBS 曲线曲面,二次曲面等2、简述 OpenGL 函数的语法特色?答: OpenGL 函数从前缀 gl 开头,并把构成函数的每个单词首字母用大写形式表示(如 glClearColor)。近似地,还定义了一些从前缀 GL_开头的常量,全部单词都使用大写形式,并以下划线分开(如 GL-COLOR-BUFFER-BIT )。3、用框图说明 OpenGL 的衬着流程,并简要说明每个坐标系。物体坐标视觉坐标裁剪坐标设施坐标模型视图变换投影变换透视除法

3、物体空间视点空间裁剪空间归一化设施空间视口变换光栅化帧缓冲区 片元测试 片元办理 屏幕空间窗口坐标4、写出 OpenGL 中局部光照的方程,要包含的系数有光源参数、资料参数、聚光灯的参数、衰减参数等,方程要表示是多个光源的。答: 极点颜色 =极点处的资料发射颜色 +全局环境光(在极点处依据资料环境颜色属性进行缩放) +经过适合衰减的来自全部光源的环境、散射、镜面光成分5、在 OpenGL 中,使用光照的步骤是什么?答 : 1、定义每个物体的每个极点的法线向量。2、创立和选择一个或多个光源,并设置它们的地点。3、创立和选择一种光照模型。4、定义场景中物体的资料属性。6、剖析程序并计算请看下边的一

4、段程序,并计算三个极点 1、2和 3处的光照的颜色值。void init(void)GLfloat mat_ambient = 0.2, 0.2, 0.2, 1.0 ;GLfloat mat_diffuse = 0.8, 0.8, 0.8, 1.0 ;GLfloat mat_emission = 0.0, 0.0, 0.0, 1.0 ;GLfloat mat_specular = 0.3, 0.3, 0.3, 1.0 ;GLfloat mat_shininess = 2.0 ;GLfloat light_position = 1.0, 1.0, 1.0, 0.0 ;GLfloat light_

5、ambient = 0.2, 0.2, 0.2, 1.0;GLfloat light_diffuse = 1.0, 1.0, 1.0, 1.0;GLfloat light_specular =1.0, 1.0, 1.0, 1.0;GLfloat lmodel_ambient = 0.2, 0.2, 0.2, 1.0;glClearColor (0.0, 0.0, 0.0, 0.0);glShadeModel (GL_SMOOTH);glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE,

6、 mat_diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission);glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, l

7、ight_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_DEPTH_TEST);void display(void)glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_TRIANGLES);glNormal3f(0.0f, 0.0

8、f, 1.0f);glVertex3f(0.0, 0.0, 0.0);glVertex3f(1.0, 0.0, 0.0);glVertex3f(1.0, 1.0, 0.0);glEnd();glFlush ();/1/2/3void reshape (int w, int h)glViewport (0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode (GL_PROJECTION);glLoadIdentity();if (w = h)glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h

9、/(GLfloat)w, -10.0, 10.0);elseglOrtho (-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();int main(int argc, char* argv)glutInit(&argc, argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize (500, 500)

10、;glutInitWindowPosition (100, 100);glutCreateWindow (argv0);init ();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMainLoop();return 0;答:把各个参数带到第四题的公式里,不要求算出结果7、在 OpenGL 中,使用纹理的步骤是什么? 纹理坐标和纹理都能够经过程序计算出来,自动生成纹理的原理是什么?答:步骤: 1、创立纹理对象,并为它指定一个纹理。2、确立纹理怎样应用到每个像素上。3、启用纹理贴图功能。4、绘制场景,供给纹理坐标和几何图形坐标。原理:

11、自动生成纹原因 glTexGen()函数来实现。要自动生成纹理坐标,第一要指定以什么样的模式来生成纹理坐标。纹理坐标生成模式有:GL_OBJECT_LINEAR 、GL_EYE_LINEAR 、GL_SPHERE_MAP 、GL_REFLECTION_MAP 和 GL_NORMAL_MAP.1.GL_OBJECT_LINEAR在这个模式下,其纹理生成函数是极点 (x0,y0,z0,w0)的物体坐标的线性组合 :生成的坐标 =p0*x0+p1*y0+p2*z0+p3*w0;此中 p0,p1,p2,p3 的值是由 glTexGen*v() 函数的 param 参数供给的。2.GL_EYE_LINE

12、AR在这个模式下, 其纹理生成函数是极点的视觉坐标 (xe,ye,ze,we)的线性组合:生成的坐标 =p0*xe+p1*ye+p2*ze+p3*we;此中 p0,p1,p2,p3的值是由 glTexGen*()函数的 param 参数供给的。3.GL_SPHERE_MAP 和 GL_REFLECTION_MAP主要用于生成球体纹理4.GL_NORMAL_MAP主要用于生建立方图纹理8、帧缓存有几种 ,什么叫片元,片元的测试和操作有哪些?【超纲】每种有什么作用?答 :帧缓存有:颜色缓存、深度缓存、模板缓存、积累缓存。片元:图元光栅化的结果,每个片元都对应于一个像素,包含颜色、深度,有时还包含纹

13、理坐标。片元的测试:裁剪测试、 alpha 测试、模板测试、深度测试;操作有:混淆、颤动、逻辑操作。9、采纳 GPU 编程,请说明 Vertex Shader 和 Fragment Shader 的输入输出坐标系是什么 ? 输入输出的主要参数是什么?答:在 Vertex Shader中的输入座标为局部坐标系(模型坐标系),输出坐标为裁剪坐标系。Fragment Shader 的输入为极点管线输出的迭代值, 包含纹理坐标、颜色信息等,输出为片元最后的颜色、深度以及输出到多个缓冲区。10、怎样实现纹理的反走样?说明其原理。答:Mipmap 技术能够实现纹理反走样, 其指定一系列早先过滤的分辨率递减

14、的纹理图像,在使用 mipmap 时,它会依据被贴图的物体大小自动确立使用哪个纹理。经过这类方法,纹理图像中的细节层就能适应绘制到屏幕上的图像。11、写出场景的反走样算法,并说明其原理。答:对场景的反走样,往常采纳多重采样的方法,即便用额外的颜色,深度和模板信息对图元进行抗锯齿办理。每个片元根椐子像素样本的数目和信息来计算,也就是依据一个多重采样缓冲区所保留的样原来计算。还有一种扰动视点的方法, 也就是多次绘制这个场景, 每次绘制时, 对视点进行颤动,作必定稍微的偏移,当整个衬着过程结束后,再把全部图象叠加起来,因为每个图象的地点不一样,能够减少锯齿状。12、请列举出 3 种以上的三维模型常有

15、的表示格式, 已知一个立方体环境映照对应的六个面上的图片,分别假设为 X_POSITVIE_PIC, X_NEGATIVE_PIC,Y_POSITIVE_PIC,Y_NEGATIVE_PIC,Z_POSITIVE_PIC,Z_NEGATIVE_PIC,请用 OBJ 格式表示一个长度为 1 的立方体,并把每个面分别贴上给定的六个图片。答 :三种常有格式: .obj .x .3ds .off# verticesv0.00.01.0v1.00.01.0v1.01.01.0v0.01.01.0v1.00.00.0v1.01.00.0v0.01.00.0v 0.0 0.0 0.0#normalsvn 0

16、.00.01.0vn 0.00.0-1.0vn 0.01.00.0vn 0.0-1.00.0vn 1.00.00.0vn -1.00.00.0vt 0.0 0.0vt 1.0 0.0vt 1.0 1.0vt 0.0 1.0#前面 1-2-3-4gposz_map usemtl posz_mapf 1/1/1 2/2/1 3/3/6 4/4/1#后边 5-6-7-8gnegz_map usemtl negz_mapf 5/1/2 6/2/2 7/3/2 8/4/2#上边 4-3-6-7gposy_map usemtl posz_mapf 4/1/3 3/2/3 6/3/3 7/4/3#下边 2-

17、1-8-5gnegy_map usemtl negy_mapf 2/1/4 1/2/4 8/3/4 5/4/4#右边 2-5-6-3gposx_map usemtl posx_mapf 2/1/5 5/2/5 6/3/5 3/4/5#左面 8-1-4-7gnegx_map usemtl negx_mapf 8/1/6 1/2/6 4/3/6 7/4/6 a.mtlnewmtl posx_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd X_POSITV

18、IE_PIC.jpgnewmtl negx_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd X_NEGATIVE_PIC.jpgnewmtl posy_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd Y_POSITIVE_PIC.jpgnewmtl negy_mapKa 0.968600 0.968600

19、0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd Y_NEGATIVE_PIC.jpgnewmtl posz_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.900000 0.900000 0.900000map_Kd Z_POSITIVE_PIC.jpgnewmtl negz_mapKa 0.968600 0.968600 0.968600Kd 0.968600 0.968600 0.968600Ks 0.9000

20、00 0.900000 0.900000map_Kd Z_NEGATIVE_PIC.jpg12、在一个坐标系 W 中,设模型为一个以 (5.0, 0.0, 0.0), (0.0, 5.0, 0.0), (0.0, 0.0, 5.0)为三个点的三角形,此刻把照相机依据以下方式设置:照相机地点设为:( 0.0, 0.0,100.0),看向的目标点为(0.0, 0.0, 0.0) ,照相机的 up 方向为( 0.0, 1.0, 0.0)投影为透视投影,竖直张角为60 度取景范围为沿照相机的朝向距离从0.1 到 300现需要把照相机看到的图片放在一个 400x300 像素分辨率的窗口的右上部分,该部分

21、开端点为 (100, 100), 宽度为 200,高度为 200(1)请写出用 OpenGL 函数表示的照相机设置。(2)写出视区 (viewport)的设置函数。(3)写出投影变换的设置函数。(4)求出从坐标系 W 到照相机坐标系(视点坐标系)的 4x4 的变换矩阵。答:1.gluLookAt(0.0,0.0, 100.0,0.0,0.0,0.0,0.0,1.0,0.0);2.glViewport (100, 100, 200, 200);3.gluPerspective(60.0f,1.0f,0.1f,300.0f);4.变换矩阵为: 10000100001-1000001void res

22、hape ()glViewport (100, 100,200, 200);glMatrixMode (GL_PROJECTION);glLoadIdentity ();gluPerspective(60.0, 1.0, 0.1, 300.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt (0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);13、剖析下边的程序并计算在下边的例子中,计算对应 1234四个极点所对应的四边形上的一个点( -1.0, 0.5, 0.0)对应的纹理坐标是多少?依

23、据近来邻域滤波方法,该点对应的颜色是什么?/* Create checkerboard texture */#define checkImageWidth 64#define checkImageHeight 64static GLubyte checkImagecheckImageHeightcheckImageWidth4;#ifdef GL_VERSION_1_1static GLuint texName;#endifvoid makeCheckImage(void)int i, j, c;for (i = 0; i checkImageHeight; i+) for (j = 0; j

24、 checkImageWidth; j+) c = (i&0x8)=0)(j&0x8)=0)*255;checkImageij0 = (GLubyte) c;checkImageij1 = (GLubyte) c;checkImageij2 = (GLubyte) c;checkImageij3 = (GLubyte) 255;void init(void)glClearColor (0.0, 0.0, 0.0, 0.0);glShadeModel(GL_FLAT);glEnable(GL_DEPTH_TEST);makeCheckImage();glPixelStorei(GL_UNPACK

25、_ALIGNMENT, 1);#ifdef GL_VERSION_1_1glGenTextures(1, &texName);glBindTexture(GL_TEXTURE_2D, texName);#endifglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);glTex

26、Parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);#ifdef GL_VERSION_1_1glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight,0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);#elseglTexImage2D(GL_TEXTURE_2D, 0, 4, checkImageWidth, checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE

27、, checkImage);#endifvoid display(void)glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D);glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); #ifdef GL_VERSION_1_1glBindTexture(GL_TEXTURE_2D, texName);#endifglBegin(GL_QUADS);1glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.

28、0, 0.0);2glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);3glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);4glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0); glTexCoord2f(1.0, 1.0); glVertex3f

29、(2.41421, 1.0, -1.41421); glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421); glEnd();glFlush();glDisable(GL_TEXTURE_2D);void reshape(int w, int h)glViewport(0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(0.0, 0.0, -3.6);void keyboard (unsigned char key, int x, int y)switch (key) case 27:exit(0);break;default:break;int

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1