dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
GIS三维地景仿真设计之雾化和纹理
来源: 天极网 作者: 青岛郎锐
  返回GIS系统三维地景仿真设计教程汇总页

  引言

  通过本系列前几篇文章的介绍,读者已经能够实现一个功能基本完备的数字高程模型(DEM)OpenGL三维仿真软件。本文作为本系列的最后一篇文章将对雾化、纹理等高级技术的使用进行介绍,通过本文,读者能够在前面的基础上实现一个完整的GIS地景仿真应用软件。

  雾化效果

  在真实世界中观察地面目标并不是在真空中进行的,而是有大气的存在,无论空气是干燥还是湿润,总会有或多或少的水蒸汽存在,而且还有少量的尘埃存在。它们的存在使得我们在观察远景目标时将不可避免地产生白茫茫的模糊效果,这种效果在OpenGL中也被称为"雾化"。虽然在现实世界中雾化现象妨碍了我们对远景目标的观察效果,但在仿真处理上如果缺少此效果反而会令人感觉不是那么真实。因此,这里就对雾化效果的实现做一个简单的介绍:

if (m_bFogMode == FALSE){
 // 雾化效果启用切换
 m_bFogMode = TRUE; // 启用雾化处理
 glEnable(GL_FOG);
 glFogi(GL_FOG_MODE, GL_LINEAR); // 采用线性变化的雾化效果
 GLfloat fogColor[] = {0.8f, 0.8f, 0.8f, 1.0}; // 指定雾化颜色
 glFogfv(GL_FOG_COLOR, fogColor);
 glFogf(GL_FOG_START, 1.0); // 指定按线性变化时计算公式的参量
 glFogf(GL_FOG_END, 10000.0);
 glHint(GL_FOG_HINT, GL_DONT_CARE); //规定雾化效果的质量
}else{
 m_bFogMode = FALSE; // 禁用雾化处理
 glDisable(GL_FOG);
}

  这段代码允许使能或禁用雾化效果。如果需要启用雾化效果,首先需要通过glEnable()函数使能雾化效果(调用GL_FOG参数),并需通过glFogi()和glFogfv()指定采用何种方式的雾化效果和雾化颜色。这里采用的是线性变化方式,因此还要通过glFogf()指定按线性变化时计算公式的参量。最后调用的glHint()函数将对雾化效果的质量作出规定。如果需要禁用雾化效果,只需简单的调用glDisable()将GL_FOG选项禁用即可。下图分别为未使用雾化效果和使用了雾化效果的场景。可以看出,启用了雾化效果后的场景更加逼真:


共2页。 1 :

上一篇:VC实现自动监测光驱状态的改变   下一篇:GIS三维地景仿真设计之最后的话
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·VC实现自动监测光驱状态的改变
·GIS三维地景仿真设计之最后的话
·GIS三维地景仿真设计之地景的数
·VC++开发BHO插件——定制你的浏
·VC中对鼠标的确定及简单控制
·用VC++建立Service服务应用程序
·GIS三维地景仿真设计之建模及场
·用VC++制作QQ自动登陆软件
·用Visual C++实现QQ界面的模拟
·用Viusal C++实现字符串分割函数
·VC++中利用MSXML解析XML文档
·用VC++实现应用程序窗口的任意分
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763