计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成
《计算机图形学实验 - 真实感图形场景的生成》由会员分享,可在线阅读,更多相关《计算机图形学实验 - 真实感图形场景的生成(4页珍藏版)》请在人人文库网上搜索。
1、计算机图形学实验 - 真实感图形场景的生成实验四 真实感图形的生成 一、 实验内容 ? ? ? ? 创建一个简单场景 场景中有一个复杂的三维几何体 通过一系列处理使得场景和几何体具有真实感 可以通过变换视点观察场景 二、 程序结构 创建Win32 Console Application,使用OpenGL的控制台应用程序框架。其中: ? init()函数进行场景初始化工作; ? reshape(GLsizei width, GLsizei height)函数设置窗口的视口大小,同时设置透视深度和透视角度等参数; ? display()函数构建坐标系并通过调用具体的绘制图形函数来绘制具体场景和几何。
2、图形; ? LoadBMP()函数导入纹理位图文件; ? LoadTexture()函数加载纹理到内存空间中; ? generateShadow(GLfloat shadow44, const GLfloat ground4, const GLfloat light4)函数来计算空间中物体上任意一点的平面阴影投射矩阵 ? keyboard(unsigned char key, int x, int y)函数处理键盘按键消息; ? mouseButton(int button, int state, int x, int y)函数处理鼠标按键消息; 最后由主函数main(int argc, ch。
3、ar* argv)中调用OpenGL函数来显示窗口,并进行绘图和处理事件消息函数。 三、 代码说明 1. 加载位图纹理 首先,编写LoadBMP()函数导入位图文件,代码截图如下: 然后,编写LoadEarthTexture()函数加载导入的位图并设置相关参数,代码截图如下: 2. 绘制房间场景 在drawScene()函数中调用OpenGL基本几何元素绘制过程glBegin(GL_QUADS)绘制4个平面,并为每个平面绑定相应的纹理图片,主要代码截图如下: 3. 绘制地球仪模型 编写drawEarth()函数绘制地球仪模型,并为地球仪模型绑定对应的纹理贴图,同时增加光照和材质的处理,代码截图。
4、如下: 4. 绘制模拟点光源 编写drawBulb()函数绘制模拟点光源及灯罩,首先调用glBegin(GL_TRIANGLE_STRIP)绘制4个三角形面构成棱锥形灯罩的4个侧面,然后调用gluSphere()函数绘制球形灯泡并增加光照和材质处理效果,代码截图如下: 5. 生成阴影 根据点光源、物体上的任意一点、物体在平面上的投影点“三点共线”的几何原理,以及投影点在平面上的位置关系,通过平面方程求得其法向量,然后利用点光源和物体上一点的坐标进行计算,得出物体上该点的平面阴影投射矩阵。因此编写generateShadow(GLfloat shadow44, const GLfloat gro。
5、und4, const GLfloat light4)来实现该矩阵的计算,代码截图如下: 然后在display()函数中调用上面的函数计算出地球仪模型的阴影投射矩阵,然后与模型矩阵进行相乘,进而绘制模型的阴影,代码截图如下: 6. 场景初始化参数设置,重绘窗口及视点设置 在init()函数中首先清除屏幕颜色和深度缓存,然后设置明暗处理和启用光照等参数,进行整个场景的初始化设置,代码截图如下: 在reshape(GLsizei width, GLsizei height)函数中设置视点的初始位置,以及透视投影的深度和角度,代码截图如下: 7. 键盘按键、鼠标按键消息处理 编写keyboard()函数处理键盘按键消息,对相关参数变量修改其步长,最后调用glutPostRedisplay()函数进行重绘窗口,部分代码截图如下: 编写mouseButton()函数处理鼠标按键消息,通过鼠标左键可控制地球仪是否自动绕地轴旋转,在此之前编写myIdle()函数实现地球仪旋转角度的步长增加,代码截图如下:。
计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成相关推荐
- 计算机内部程序代码,计算机为什么能够读懂程序代码?
01 引子 上一回,我们的主人公小A初次亮相,凭借基础的前后端理解,从技术实现的层面为我们剖析了微信扫码登录的原理和机制.可能很多人因此会好奇,小A到底是做什么的呢?为什么能够弄懂这些原理呢? 其实, ...
- C语言计算机图形学平移代码,计算机图形学之二维平移旋转缩放代码
以下均为MFC工程代码 代码一:简单实现 void CGeotranView::Onyuantu() { // 原图,画三角形 CDC *pDC=GetDC(); pDC->MoveTo(100 ...
- 计算机dos批处理代码,计算机Dos批处理,编写一键清理系统垃圾的bat代码,小白都可以学-批处理删除文件...
计算机Dos批处理,编写一键清理系统垃圾的bat代码,编写自己清理系统的代码,就是这样简单. 关于代码怎么使用: [新建文本文件(记事本)]-[复制代码]-[粘贴代码]-[重命名文本文件后缀名为bat ...
- 计算机配色算法代码,计算机配色理论及算法的研究
摘要: K-M光学模型与色料加和混合模型是计算机配色理论的基础,经调研发现两者在计算机配色的应用中存在一些问题,本文以涤纶平纹织物为基材,对计算配色理论及其算法进行了系统的研究.首先,本文系统分析了K ...
- 计算机图形学生活应用,计算机图形学的应用实例(计算机图形作业).doc
计算机图形学的应用实例(计算机图形作业).doc 计算机图形学大作业 计算机图形学的应用实例 班级: 学号: 姓名: 2012-03-12 计算机图形学的应用实例 一.计算机图像学简介 计算机图形学是 ...
- 计算机图形学透视投影知识点,计算机图形学
计算机图形学期末复习 第一章 绪论 计算机图形学定义:计算机图形学是研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理.方法和技术 第二章 计算机设备及硬件系统 知识点 阴极射线管(CRT) ...
- 计算机图形学 上机作业,计算机图形学.doc
<计算机图形学> 教 学 大 纲 (Computer Graphics ) 学分数 3 周学时 3 旧代号:318.034.1,新代号:MATH130023 一.说明: 1. 课程名称:计 ...
- 计算机图形学的发展与应用论文,计算机图形学毕业论文_计算机图形学发展趋势_计算机图形学有很多应用...
有什么经典的计算机图形学论文吗? 想看计算机图形学的论文去搜这个方向的顶级会议或期刊,SIGGRAPH,EuroGraphics,TVCG,还有很多,直接搜一下都能知道,读这些顶级会议上的论文可以知道 ...
- 现代计算机图形学入门ppt,计算机图形学完整课件.ppt
计算机图形学完整课件.ppt (326页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机图形学 第一章.绪论第二章.基本图形生成原理第 ...
最新文章
- 大型运输行业实战_day14_1_webserivce简单入门
- 苹果宣布创立欧洲首个iOS开发中心
- 硬盘变小oracle不能连接,服务器更换硬盘后Oracle不能连接问题的解决
- Ambari2.7.4+HDP3.1.4下sqoop增量导入只支持append模式,mysql直接进入hive的lastmodified的不支持。下面是增量的命令。
- 白鹭引擎 - 显示对象的基准点与横纵坐标 ( 绘制一个来回移动的绿色方块 )
- 深度学习之非极大值抑制(Non-maximum suppression,NMS)
- win10计算机修改底色,win10电脑如何修改登陆背景
- gitlab-ee使用mysql_在 GitLab 我们是如何扩展数据库的
- 腾讯alloyteam团队前端代码规范(记录)
- 《Scala机器学习》一一1.1 Scala入门
- C# 编译的DLL文件在其他项目中调用时,看不见注释
- 使用zTree和json构建简单树节点
- HTML表格(HTML 表格的使用,收藏这一篇就够了)
- golang 中文处理
- begin tran创建事务、commit tran提交事务、rollback tran回滚(撤消)事务的用法及理解
- 【干货】github上十二款最著名的Android播放器开源项目
- 为什么游戏流畅需要60帧,而电影流畅只需要24帧?
- 《事情正在起变化》《这是为什么》?
- 个人投资理财太平亿康的五种方式
- 《今日简史》《人类简史》《未来简史》
热门文章
- How to identify the product settype and attribute in a given list
- SAP C4C客户主数据重复检查和清洗实现
- SAP ABAP和Hybris的源代码生成工具
- python 追加到字典_扫描器篇(三)之python编写基于字典的网站目录探测脚本
- 最小表达式_C# 09.找最大和最小的数字
- 文件行数_linux/unix下如何统计文件行数
- go语言第一个程序-hello world
- python学习-类(global、nonlocal、继承、多态)
- android 圆环温度控件,android 圆环倒计时控件
- 片偏移字段的值怎么算_搞懂钢丝网片计算原理,怎么算都不怕出错!