学习Nehe Lesson 16

这一课的基础是第六课、第七课,要先画一个正方体出来,实现它的旋转、光照等控制。在这里对雾的设置全在InitGL() 函数中。
首先是载入材质、清空深度缓存,打开深度测试,等等。接下来就是雾的设置函数。

glFogi(GL_FOG_MODE, fogMode[fogfilter]);            //设置雾气的模式
glFogfv(GL_FOG_COLOR, fogColor);                    // 设置雾的颜色
glFogf(GL_FOG_DENSITY, 0.35f);                      // 设置雾的密度
glHint(GL_FOG_HINT, GL_DONT_CARE);                  // 设置系统如何计算雾气
glFogf(GL_FOG_START, 1.0f);                         // 雾气的开始位置
glFogf(GL_FOG_END, 5.0f);                           // 雾气的结束位置
glEnable(GL_FOG);                                   // 使用雾气

能看出来,这里的几个函数都十分相似,它们都是glFog函数。glFogf, glFogi, glFogfv, glFogiv的不同在于后面的参数不同。
先看函数的说明。

void glFogf(GLenum pname,GLfloat param)
void glFogi(GLenum pname,GLint param)

其中,pname是指定的一个单值雾参数。可以是GL_FOG_MODE、GL_FOG_DENSITY GL_FOG_START、GL_FOG_END GL_FOG_INDEX。

void glFogfv(GLenum pname,const GLfloat *params)
void glFogiv(GLenum pname,const GLint *params)

pname可以是GL_FOG_MODE、GL_FOG_DENSITY、 GL_FOG_START、GL_FOG_END、 GL_FOG_INDEX、GL_FOG_COLOR。

注意,这四个函数差别很细微,前两个的功能后两个都有,但后两个比前两个多了颜色控制的功能,而后两个的数值参数是const型(复习const,可以看: http://blog.youkuaiyun.com/Eric_Jo/article/details/4138548 )。而第一个和第三个的数字量是GLfloat,第二个和第四个是GLint。
接下来看这几个参数和取值范围。
GL_FOG_MODE
参数是一个整数或浮点值,指定要使用的方程来计算雾混合因素,f。可以是三个符号常量:GL_LINEAR GL_EXP,GL_EXP2。相应的有不同的计算方程。默认GL_EXP雾模式。
GL_FOG_DENSITY
参数是指定一个整数或浮点值密度,用于指数雾雾密度方程。只接受非负密度。默认的灰雾密度是1.0。
GL_FOG_START
参数是指定一个整数或浮点值开始,近距离用于线性雾方程。默认的距离是0.0。
GL_FOG_END
参数是指定一个整数或浮点值,远距离用于线性雾方程。默认的距离是1.0。
GL_FOG_INDEX
参数是指定一个整数或浮点值,作为雾色指数。默认的雾指数为0.0。
GL_FOG_COLOR
参数包含四个整数或浮点值,指定Cf,雾的颜色。整数值线性映射,这样是最积极的可表示的值映射到1.0,最消极的可表示的值映射到-1.0。浮点值直接映射。转换后,所有颜色组件夹区间[0,1]。默认的是雾颜色(0,0,0,0)。

glFog()函数之后是glHint()函数。这个函数是用于修正的。
参数如下:
GL_FOG_HINT
指示雾计算的准确性。 如果 OpenGL 实现不有效地支持每像素雾计算,提示 GL_DONT_CARE 或 GL_FASTEST 会导致每个顶点雾化效果计算。
GL_LINE_SMOOTH_HINT
指示是锯消除行的采样质量。如果应用了一个较大的筛选器函数,则将提示 GL_NICEST 可能会导致生成过程中栅格化,更多像素碎片。
GL_PERSPECTIVE_CORRECTION_HINT
表示颜色和纹理坐标插补的质量。 如果角度更正参数插值不有效地支持由 OpenGL 实现,提示 GL_DONT_CARE 或 GL_FASTEST 可以导致简单线性插值的颜色和/或纹理坐标。
GL_POINT_SMOOTH_HINT
表示是锯消除点采样的质量。 如果应用了一个较大的筛选器函数, 则将提示 GL_NICEST 可能会导致生成 过程中栅格化,更多像素碎片。
GL_POLYGON_SMOOTH_HINT
指示是锯消除多边形的采样质量 。如果应用了一个较大的筛选器函数,则将提示GL_NICEST 可能会导致生 成过程中栅格化, 更多像素碎片。
取值如下:
GL_FASTEST
应选择最有效的选项。
GL_NICEST
应选择最正确或最高质量的选项。
GL_DONT_CARE
客户端没有一个首选项。

Nehe的解释是这样的:“glHint (GL_FOG_HINT, GL_DONT_CARE); 设置修正。我使用了GL_DONT_CARE因为我不关心它的值。gl_dont_care - 由OpenGL决定使用何种雾效(对每个顶点还是每个像素执行雾效计算)和一个未知的公式(?)gl_nicest - 对每个像素执行雾效计算(效果好)。gl_fastest - 对每个顶点执行雾效计算 (更快,但效果不如上面的好)

雾的设置就这样完成了。

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 DAO Jet 数据库引擎是微软早期开发的用于操作 Access 数据库的组件,与 Jet 引擎紧密相连。Jet 引擎是 Windows 操作系统内置的数据库管理系统,主要支持 Access 数据库及其他使用 Jet 数据存储格式的应用程序。DAO(数据访问对象)是与 Jet 引擎搭配的数据访问接口,能让程序员利用对象和方法操作数据库。当出现“无法初始化 DAO/Jet 数据库引擎”的问题时,通常是由于 DAO 或 Jet 引擎组件损坏、丢失或版本不兼容引起的,这可能是系统更新、病毒入侵、卸载不当或其他软件冲突所致。解决办法之一是从 VC6 光盘中提取相关文件重新安装 DAO Jet 数据库引擎。DAO 接口包含多种类和接口,如 Database、Recordset、Field 等,开发者可借助这些对象执行 SQL 查询、创建和修改表、索引及查询等操作。与 ADO(ActiveX 数据对象)相比,DAO 功能稍弱,但因更贴近底层的 Jet 引擎,在处理 Access 特定特性时可能更便捷。安装 DAO Jet 数据库引擎一般包括以下步骤:下载包含所有必要 DAO 组件的 DAO-REDIST 文件;运行安装程序,按向导提示操作;安装时系统会自动检测并修复 DAO 组件问题或安装缺失组件;安装完成后,可能需重启计算机使更改生效;之后可通过编写简单 VBA 代码测试数据库连接,验证 DAO 是否正常工作。需注意,DAO Jet 数据库引擎主要适用于旧系统和应用程序,新版本的 Microsoft Office 和 Windows 操作系统不再推荐使用 DAO,而是更倾向于采用 ADO 接口以及 SQL Server Express 等更安全、更强大的数据库管理系统。不过,对于依赖 DAO 技
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值