OpenGL-雾Fog-实例
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-实例相关推荐
- OpenGL键盘消息实例
OpenGL 键盘消息实例 先上图,再解答. 正常显示 按下M键显示 完整主要的源代码 源代码剖析 先上图,再解答. 正常显示 按下M键显示 完整主要的源代码 #
- OpenGL混合功能实例
OpenGL 混合功能实例 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <sb7.h> #include <vmath.h& ...
- OpenGL抗锯齿实例
OpenGL抗锯齿实例 先上图,再解答. 完整主要的源代码 先上图,再解答. 完整主要的源代码 #include <glad/gl.h> #define GLFW_INCLUDE_NONE ...
- android雪花飘落效果,【OpenGL】Shader实例分析(七)- 雪花飘落效果
研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shader ...
- android opengl es 雾化效果实例
雾相关: 三种雾的计算方法,怎么设置雾的颜色和雾的范围 设置雾的背景颜色:gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); 设置雾气的模式:gl.glFogf(GL10 ...
- opengl模板测试实例
在opengl中, 可以开启模板测试功能,来限定某一部分是可画的,某一部分是不可画的.这可通过设置模板模式来控制哪部分是可画的, 有点类似在墙上喷字. 虽说剪刀测试也可以限定蓝屏的某一部分可画,但不适 ...
- Android 中opengl es灯光效果实例
一.还是要准备一张图片,放在res/drawable中 二.灯光效果代码: /*** 设置灯光*///设置环境光gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_AMBIENT ...
- OpenGL程序:实例练习
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- 【OpenGL】Shader实例分析(十)- 钻石效果
好久没有写文章了,赶紧补几篇.最近研究了一个玻璃折射的效果(用在钻石上),虽然没有达到最满意的效果,还是先分享出来,待以后有更好的想法再补充. 先看效果吧: 这里面有两个效果,左边是unity的免费插 ...
- OpenGL DoubleWrite的实例
OpenGL DoubleWrite 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include "vapp.h" #include &q ...
最新文章
- 《Python基础知识全家桶》
- Linux gsoap 访问Jira
- android中使用DisplayMetrics获取屏幕参数
- 机器学习知识点(三十)LDA话题模型Java实现
- C# socket编程第三篇
- 文献记录(part102)--Two-phase clustering process for outliers detection
- 【汇编语言】8086汇编的loop循环与[bx]寻址(王爽第五章5.5节学习笔记)
- 前端学习(2574):vuex最佳实践
- python切片逆序_Python 的逆序同时切片如何操作?
- c# MEF框架(四 见证奇迹的时刻之实战应用)
- windows7 x86_64系统安装xampp后apache无法启动,端口冲突
- nft文件传输_Nancy之文件上传与下载
- Android Fragment-APP调用其他APP中的Fragment 1
- 原来互联网公司想裁员还能这样玩?
- PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息
- iOS·NSObject的两种含义:类与协议
- vue,的M、V、VM分别代表什么
- js 数字金额大小写转换成中文大写
- 服务器运维1-failed to start LSB
- CTime和COleDateTime区别 比较