第八讲: OpenGL的组合图形.

Slides:



Advertisements
Similar presentations
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
Advertisements

6.2 二次函数图象和性质 (1) 1 、函数 y = x 2 的图像是什么样子呢 ? 2 、如何画 y=x 2 的图象呢 ?
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
§3.4 空间直线的方程.
丰富的图形世界(2).
第二章 二次函数 第二节 结识抛物线
10.2 立方根.
第五课 小设计师.
俄罗斯方块:注意观察游戏中用到的 数学的知识
雷 霆 战 机 By—谷恩轩&余万全.
双字符键和大写锁定键.
探索三角形相似的条件(2).
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
第十章 真实感图形绘制 基本概念 简单光照模型 基于简单光照模型的多边形绘制.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
C++程序设计 王希 图书馆三楼办公室.
第5课 小写转大写,数字转符号.
Using C++ The Weird Way Something about c++11 & OOP tricks
真实感图形 授课教师: 单位:.
第六章 三维真实感物体显示技术 虚拟现实(Virtual Reality,简称VR)技术是一种逼真的模拟人在自然环境中视觉、听觉、运动等行为的人机界面技术。其目的是:不仅能够在多维空间仿真建模,而且能够帮助人们获取知识和形成新的概念,Mark Green给出了一个简明的虚拟现实应用系统模型,如图6.1所示。
计算机图形学 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 中国科学技术大学 视觉计算与可视化实验室
Hadoop I/O By ShiChaojie.
OpenGL (7) 靜宜大學資工系 蔡奇偉 副教授
第5章 语义分析(Semantic Analysis)
物体识别 3D建图 semantic mapping
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
走进编程 程序的顺序结构(二).
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
纹理映射.
Introduction to OpenGL (2)
第四章 图元的属性 曾智勇 软件学院.
数学模型实验课(三) 插值与三维图形.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第七章 操作符重载 胡昊 南京大学计算机系软件所.
编程作业3:网页正文抽取 (10分).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Chapter 5 Attributes of Output Primitives (图元的属性)
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
噪声模拟操作说明 CANDA.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
OpenGL几何变换程序.
第五节 对坐标的曲面积分 一、 对坐标的曲面积分的概念与性质 二、对坐标的曲面积分的计算法 三、两类曲面积分的联系.
保留字與識別字.
Logo语言. Logo语言 视图窗口 小海龟 ?: 提示符 l: 光标 命令窗口.
Web安全基础教程
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
第三章 世界文明的蛻變與互動 第一節 歐洲社會的蛻變 第二節 世界文明的交匯 第三節 亞洲大帝國的發展 1.
陣列 東海大學物理系‧資訊教育 施奇廷.
《工程制图基础》 第四讲 几何元素间的相对位置.
生命教育 媒材應用分享 電影 天外奇蹟(UP) 華盛頓高中 巫孟容.
第二章 基本数据类型 ——数据的表示.
第4课时 绝对值.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
坐標 →配合課本 P49~56 重點 在坐標平面上,以 ( m , n ) 表示 P 點的坐標,記為 P ( m , n ),m 為 P 點的 x 坐標,n 為 P 點的 y 坐標。 16.
义务教育课程标准试验教科书九年级 下册 投影和视图 珠海市金海岸中学 杜家堡 电话:
§2-2 点的投影 一、点在一个投影面上的投影 二、点在三投影面体系中的投影 三、空间二点的相对位置 四、重影点 五、例题 例1 例2 例3
总复习.
平行四边形的面积.
24.4弧长和扇形面积 圆锥的侧面积和全面积.
3.2 平面向量基本定理.
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
三角 三角 三角 函数 余弦函数的图象和性质.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
自由曲线与曲面(II) 计算机科学与技术.
生活中的几何体.
第三章 图形的平移与旋转.
Presentation transcript:

第八讲: OpenGL的组合图形

解释程序:A02_OpenGL的基本图形——基本图形的组合:

解释GameLoop函数:

1、画飞机 二战的飞机

2、发射台

3、发射台_飞行物、 3、发射台_飞行物

4、A03_OpenGL的组合图形 4、A03_OpenGL的组合图形

5、A04_摄像漫游 5、A04_摄像漫游

这个函数用来在场景中画横竖的水平线(画地图) 函数:GLvoid baiscobj::DrawGround() 画一个平行于OpenGL场景XZ面的网状面,将它作为地面,以此观察摄像漫游效果。 这个函数用来在场景中画横竖的水平线(画地图) glBegin(GL_LINES);//场景中画横竖的水平线 for (int x = -size0; x < size0;x+=4)//x=-80到x=80,每循环一次加4 {glVertex3i(x, 0, -size0); glVertex3i(x, 0, size0);} //因为y=0,所以在xz平面上画水平竖线 for (int z = -size0; z < size0;z+=4) {glVertex3i(-size0, 0, z); glVertex3i( size0, 0, z);} //因为y=0,所以在xz平面上画水平横线 glEnd();

函数BOOL baiscobj::DisplayScene() 这个函数是:控制键盘7个键的的功能。 shift键、及四个方向键(上、下、左、右)、up键、down键的功能。

KEY_DOWN函数: 在StdAfx.h文件中: #define KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) //表示传入一个vk_code(健值),告诉当前是否按下该键。

gluLookAt(…)函数: 在OpenGL中观察虚拟世界的主要函数gluLookAt(…) ,它的主要的作用是可以改变我们在OpenGL场景的观察点,这个观察点就好像是我们的眼睛,也好像是我们手中的摄像机。我们在一个场景中行走时,看到前面的物景越来越近,两边的物体在向后退,这就是我们的观察点在场景中的位置改变的结果。

gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 1、改变前三个参数的值可以模拟人在实际环境中的移动; // g_eye[1]固定值,g_eye[0]、g_eye[2]值由向下和向上的方向键决定。 //所以最终向上和向下的方向键模拟人在实际环境中的移动。 2、改变中间三个参数的值,可以模拟人眼的转动,即所观察场景的变化。 //g_look[1]+g_elev的值相对是固定的。 g_look[1] = g_eye[1],g_elev的值由up\down键决定 //g_look[0]\g_look[2]值向左和向右的方向键决定。g_look[0]\g_look[2]值由rad_xz决定的。

6、A05_开天辟地

6.1模拟真实场景: 可以在OpenGL场景中建立有一定真实感的天空、地面。这个地面还有起伏的山峦,在其中漫游时还有翻山越岭、爬坡过堑的视觉效果,正是做山地游戏的绝好场景。

6.2 A05_开天辟地 程序流程解释 Render函数: m_baiscobj->DisplayScene(); //键盘控制 m_baiscobj->DrawSand();//画底面 m_baiscobj->CreateSkyBox(3,6,3,6);//画前、后、左、右、顶 5个面 m_baiscobj->picter(MAP+10,0,-MAP); //画飞行物和发射台

glDrawElements函数 glDrawElements是一个OPENGL的图元绘制函数,从数组中获得数据渲染图元。 函数原型为: 函数原型为:    void glDrawElements( GLenum mode, GLsizei count,   GLenum type, const GLvoid *indices);    其中:    mode指定绘制图元的类型,它应该是下列值之一,GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, and GL_POLYGON.    count为绘制图元的数量乘上一个图元的顶点数。    type为索引值的类型,只能是下列值之一:GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT。    indices:指向索引存贮位置的指针。

随机地面     在用双重FOR循环生成地面MAP_W * MAP_W的平面,这个平面是一个三维量,其中的高(Y分量)取随机数。并形成顶点索引和贴图索引。

代码: for (int z = 0; z < MAP_W; z++)       for (int x = 0; x < MAP_W; x++)         { Vertex = z * MAP_W + x;           g_terrain [Vertex][0] = float(x)*MAP_SCALE; //地域数据X分量           g_terrain [Vertex][1] = h + FRAND * h;      //Y分量,随机产生山的高度           g_terrain [Vertex][2] = -float(z)*MAP_SCALE;//地域数据Z分量           g_texcoord[Vertex][0] = (float) x;          //索引数组x           g_texcoord[Vertex][1] = (float) z;          //索引数组z           g_index [index++] = Vertex;                 //顶点数组1维           g_index [index++] = Vertex+ MAP_W;         }     显示时用命令glDrawElements(...);显示由顶点数组指定的面,结果就形成了高低不平的曲面。     在这个曲面上贴上表示地面的图形,就形成了"山"。

7、A08_显示3D模型(漫游) 6、A08_显示3D模型