2.OpenGL---雾

2.1 glEnable(GL_FOG);//启用雾效果

2.2 glFog*()函数,设置用于控制雾浓度的方程式;

glFogi (GL_FOG_MODE,fogMode);  //设置雾的模式
glFogfv(GL_FOG_COLOR,fogcolor);//设置雾的颜色
glFogf (GL_FOG_DENSITY, 0.35); //设置雾的密度
glHint (GL_FOG_HINT, GL_DONT_CARE);
glFogf (GL_FOG_START, 1.0);//设置雾开始位置,
glFogf (GL_FOG_END, 5.0);  //设置雾结束位置,

GL_FOG_MODE:设置雾的模式:GL_EXP(默认)、GL_EXP2、GL_LINEAR(最好的雾渲染模式)

2.3 glHint(target,mod);

·        GL_FOG_HINT值,指定雾化计算的精度;

·        GL_FASTEST:选择速度最快选项。

·        GL_NICEST:选择最高质量选项。

·        GL_DONT_CARE:对选项不做考虑。

实例代码:

static GLint fogMode;static void init(void)
{GLfloat position[]={0.5,0.5,3.0,0.0};glEnable(GL_DEPTH_TEST);glLightfv(GL_LIGHT0,GL_POSITION,position);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);{GLfloat mat[3] = {0.1745, 0.01175, 0.01175};   glMaterialfv (GL_FRONT, GL_AMBIENT, mat);mat[0] = 0.61424; mat[1] = 0.04136; mat[2] = 0.04136;   glMaterialfv (GL_FRONT, GL_DIFFUSE, mat);mat[0] = 0.727811; mat[1] = 0.626959; mat[2] = 0.626959;glMaterialfv (GL_FRONT, GL_SPECULAR, mat);glMaterialf (GL_FRONT, GL_SHININESS, 0.6*128.0);}glEnable(GL_FOG);{GLfloat fogcolor[4]={0.5,0.5,0.5,1.0};fogMode = GL_EXP;glFogi (GL_FOG_MODE,fogMode);glFogfv(GL_FOG_COLOR,fogcolor);glFogf (GL_FOG_DENSITY, 0.35);glHint (GL_FOG_HINT, GL_DONT_CARE);glFogf (GL_FOG_START, 1.0);glFogf (GL_FOG_END, 5.0);}glClearColor(0.5, 0.5, 0.5, 1.0);  /* fog color */
}
static void renderSphere (GLfloat x, GLfloat y, GLfloat z)
{glPushMatrix();glTranslatef (x, y, z);glutSolidSphere(0.4, 16, 16);glPopMatrix();
}/* display() draws 5 spheres at different z positions.*/
void display(void)
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);renderSphere (-2., -0.5, -1.0);renderSphere (-1., -0.5, -2.0);renderSphere (0., -0.5, -3.0);renderSphere (1., -0.5, -4.0);renderSphere (2., -0.5, -5.0);glFlush();
}
void reshape(int w, int h)
{glViewport(0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if (w <= h)glOrtho (-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w,2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0);elseglOrtho (-2.5*(GLfloat)w/(GLfloat)h,2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity ();
}
void keyboard(unsigned char key, int x, int y)
{switch (key) {case 'f':case 'F':if (fogMode == GL_EXP) {fogMode = GL_EXP2;printf ("Fog mode is GL_EXP2\n");}else if (fogMode == GL_EXP2) {fogMode = GL_LINEAR;printf ("Fog mode is GL_LINEAR\n");}else if (fogMode == GL_LINEAR) {fogMode = GL_EXP;printf ("Fog mode is GL_EXP\n");}glFogi (GL_FOG_MODE, fogMode);glutPostRedisplay();break;default:break;}
}

exp和exp2:

liner:

OpenGL-雾Fog-实例相关推荐

  1. OpenGL键盘消息实例

    OpenGL 键盘消息实例 先上图,再解答. 正常显示 按下M键显示 完整主要的源代码 源代码剖析 先上图,再解答. 正常显示 按下M键显示 完整主要的源代码 #

  2. OpenGL混合功能实例

    OpenGL 混合功能实例 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <sb7.h> #include <vmath.h& ...

  3. OpenGL抗锯齿实例

    OpenGL抗锯齿实例 先上图,再解答. 完整主要的源代码 先上图,再解答. 完整主要的源代码 #include <glad/gl.h> #define GLFW_INCLUDE_NONE ...

  4. android雪花飘落效果,【OpenGL】Shader实例分析(七)- 雪花飘落效果

    研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shader ...

  5. android opengl es 雾化效果实例

    雾相关: 三种雾的计算方法,怎么设置雾的颜色和雾的范围 设置雾的背景颜色:gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); 设置雾气的模式:gl.glFogf(GL10 ...

  6. opengl模板测试实例

    在opengl中, 可以开启模板测试功能,来限定某一部分是可画的,某一部分是不可画的.这可通过设置模板模式来控制哪部分是可画的, 有点类似在墙上喷字. 虽说剪刀测试也可以限定蓝屏的某一部分可画,但不适 ...

  7. Android 中opengl es灯光效果实例

    一.还是要准备一张图片,放在res/drawable中 二.灯光效果代码: /*** 设置灯光*///设置环境光gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_AMBIENT ...

  8. OpenGL程序:实例练习

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  9. 【OpenGL】Shader实例分析(十)- 钻石效果

    好久没有写文章了,赶紧补几篇.最近研究了一个玻璃折射的效果(用在钻石上),虽然没有达到最满意的效果,还是先分享出来,待以后有更好的想法再补充. 先看效果吧: 这里面有两个效果,左边是unity的免费插 ...

  10. OpenGL DoubleWrite的实例

    OpenGL DoubleWrite 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include "vapp.h" #include &q ...

最新文章

  1. 《Python基础知识全家桶》
  2. Linux gsoap 访问Jira
  3. android中使用DisplayMetrics获取屏幕参数
  4. 机器学习知识点(三十)LDA话题模型Java实现
  5. C# socket编程第三篇
  6. 文献记录(part102)--Two-phase clustering process for outliers detection
  7. 【汇编语言】8086汇编的loop循环与[bx]寻址(王爽第五章5.5节学习笔记)
  8. 前端学习(2574):vuex最佳实践
  9. python切片逆序_Python 的逆序同时切片如何操作?
  10. c# MEF框架(四 见证奇迹的时刻之实战应用)
  11. windows7 x86_64系统安装xampp后apache无法启动,端口冲突
  12. nft文件传输_Nancy之文件上传与下载
  13. Android Fragment-APP调用其他APP中的Fragment 1
  14. 原来互联网公司想裁员还能这样玩?
  15. PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息
  16. iOS·NSObject的两种含义:类与协议
  17. vue,的M、V、VM分别代表什么
  18. js 数字金额大小写转换成中文大写
  19. 服务器运维1-failed to start LSB
  20. CTime和COleDateTime区别 比较

热门文章

  1. 2021中国IC封装基板市场现状及未来发展趋势
  2. 如何选择羽毛球?(ZT)
  3. ubuntu从19.04升级到20.04后五笔一直不能输入中文,解决方法
  4. 传智播客数据绑定和数据库开发基础(第四季)
  5. 如何成为虾皮的优选卖家-扬帆际海
  6. STM32单片机RGB红蓝调光植物补光系统红光蓝光PWM调色调节亮度
  7. EXCEL批量删除单元格样式
  8. python,unicode转换中文,中文转换unicode
  9. 国家高新技术企业申报办法及认定要求,重点介绍
  10. UI设计转行交互怎么样?【萧蕊冰】