📄 tutorial_41.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><!-- 这篇文章由Dancingwind翻译,作者的联系方式zhouwei02@mails.tsinghua.edu.cn --><title>NeHe OpenGL教程第四十一课,DancingWind翻译</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
A:active {
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:link {
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:visited {
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff; TEXT-DECORATION: none
}
A:hover {
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ffda6a; TEXT-DECORATION: none
}
BODY {
COLOR: #ffffff; BACKGROUND-COLOR: #000000
}
TD IMG {
DISPLAY: block
}
.back {
BACKGROUND: #000022; COLOR: #ffffff
}
.back2 {
BACKGROUND: #000000; COLOR: #ffffff
}
.back3 {
BACKGROUND: #000022; COLOR: #ffffff
}
.copy {
FONT-SIZE: 11px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.head {
FONT: bold 13px Tahoma, Verdana, sans-serif; TEXT-DECORATION: none
}
.link {
FONT-SIZE: 14px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.menu {
FONT: bold 17px Tahoma, Verdana, sans-serif; TEXT-DECORATION: none
}
.news {
BACKGROUND: #00008b; COLOR: #ffffff
}
.tab {
PADDING-LEFT: 35px
}
.text {
FONT-SIZE: 12px; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Tahoma, Verdana, sans-serif; FONT-VARIANT: normal; TEXT-DECORATION: none
}
.theme {
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #bbccff
}
.dotted {
BORDER-RIGHT: #00008b 2px dotted; BORDER-TOP: #00008b 2px dotted; BORDER-LEFT: #00008b 2px dotted; BORDER-BOTTOM: #00008b 2px dotted
}
.solid {
BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; BORDER-BOTTOM: #ffffff 1px solid
}
.logo {
BACKGROUND-IMAGE: url(../graphics/rgb/logo.jpg)
}
.menubar {
BACKGROUND-IMAGE: url(../graphics/rgb/menubar.jpg)
}
.menubg {
BACKGROUND-IMAGE: url(../graphics/rgb/menubg.jpg)
}
.menuheading {
BACKGROUND-IMAGE: url(../graphics/rgb/menuheading.jpg)
}
.nehebutton {
BACKGROUND-IMAGE: url(../graphics/rgb/nehebutton.jpg)
}
.newslogo {
BACKGROUND-IMAGE: url(../graphics/rgb/newslogo.jpg)
}
.tinylogo {
BACKGROUND-IMAGE: url(../graphics/rgb/border/tinylogo.jpg)
}
.bc {
BACKGROUND-IMAGE: url(../Pic/bc.png)
}
.bl {
BACKGROUND-IMAGE: url(../Pic/bl.png)
}
.br {
BACKGROUND-IMAGE: url(../Pic/br.png)
}
.c {
BACKGROUND-IMAGE: url(../Picc.png)
}
.l {
BACKGROUND-IMAGE: url(../Pic/l.png)
}
.lc {
BACKGROUND-IMAGE: url(../Piclc.png)
}
.r {
BACKGROUND-IMAGE: url(../Pic/r.png)
}
.rc {
BACKGROUND-IMAGE: url(../Picrc.png)
}
.tc {
BACKGROUND-IMAGE: url(../Pic/tc.png)
}
.tl {
BACKGROUND-IMAGE: url(../Pic/tl.png)
}
.tr {
BACKGROUND-IMAGE: url(../Pic/tr.png)
}
</style></head><body bgcolor="black" link="#aaccff" text="white" vlink="#aaccff">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tinylogo" height="130" width="326">
<img alt="NeHe Productions" src="Tutorial_41_files/logo.png" height="130" width="326"></td>
<td align="center" valign="center"><div align="center"><font class="text"><font class="theme" size="+3"><b><i>第41课</i></b></font></font></div></td>
</tr></tbody></table>
<!-- 上边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_41_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_41_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_41_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<!-- 中部-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<!-- 中部左边框-->
<td background="Tutorial_41_files/l.gif"><img src="Tutorial_41_files/l.gif" height="28" width="28"></td>
<!-- 中部文字部分-->
<td valign="top" width="100%">
<table border="0" width="100%">
<tbody><tr>
<td width="31%"><img src="Tutorial_41_files/lesson41.jpg" height="180" width="240"></td>
<td width="69%"><p><font>体积雾气</font></p>
<p><font size="3">把雾坐标绑定到顶点,你可以在雾中漫游,体验一下吧。</font></p></td>
</tr>
</tbody></table>
</td>
<!-- 中部右边框-->
<td background="Tutorial_41_files/r.gif"><img src="Tutorial_41_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<!-- 下边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_41_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_41_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_41_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_41_files/tl.png" height="28" width="28"></td>
<td class="tc" background="Tutorial_41_files/tc.gif" width="100%">
<p align="center"><img alt="" src="Tutorial_41_files/tc.png" height="28" width="28"></p></td>
<td class="tr"><img alt="" src="Tutorial_41_files/tr.png" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l" background="Tutorial_41_files/l.png"><img alt="" src="Tutorial_41_files/l.gif" height="28" width="28"></td>
<td class="back" valign="top" width="100%">这一课我们将介绍体积雾,为了运行这个程序,你的显卡必须支持扩展"GL_EXT_fot_coord"。</td>
<td class="r" background="Tutorial_41_files/r.png">
<img alt="" src="Tutorial_41_files/r.png" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_41_files/bl.png" height="28" width="28"></td>
<td class="bc" background="Tutorial_41_files/bc.png" width="100%">
<p align="center"><img alt="" src="Tutorial_41_files/bc.png" height="28" width="28"></p></td>
<td class="br"><img alt="" src="Tutorial_41_files/br.png" height="28" width="28"></td></tr></tbody></table>
<pre>#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <math.h>
#include "NeHeGL.h"
#pragma comment( lib, "opengl32.lib" )
#pragma comment( lib, "glu32.lib" )
GL_Window* g_window;
Keys* g_keys; </pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_41_files/tl.png" height="28" width="28"></td>
<td class="tc" background="Tutorial_41_files/tc.png" width="100%">
<p align="center"><img alt="" src="Tutorial_41_files/tc.png" height="28" width="28"></p></td>
<td class="tr"><img alt="" src="Tutorial_41_files/tr.png" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l" background="Tutorial_41_files/l.png">
<img alt="" src="Tutorial_41_files/l.png" height="28" width="28"></td>
<td class="back" valign="top" width="100%">下面的代码设置雾的颜色和摄像机在Z方向的深度</td>
<td class="r" background="Tutorial_41_files/r.png">
<img alt="" src="Tutorial_41_files/r.png" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_41_files/bl.png" height="28" width="28"></td>
<td class="bc" background="Tutorial_41_files/bc.png" width="100%">
<p align="center"><img alt="" src="Tutorial_41_files/bc.png" height="28" width="28"></p></td>
<td class="br"><img alt="" src="Tutorial_41_files/br.png" height="28" width="28"></td></tr></tbody></table>
<pre>GLfloat fogColor[4] = {0.6f, 0.3f, 0.0f, 1.0f}; <font class="theme">// 雾的颜色 </font>
GLfloat camz; <font class="theme">// 摄像机在Z方向的深度</font>
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="tl"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td>
<td class="tc" width="100%"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="100%"></td>
<td class="tr"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="l"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td>
<td class="back" valign="top" width="100%">下面变量GL_FOG_COORDINATE_SOURCE_EXT和GL_FOG_COORDINATE_EXT具有初值,他们在glext.h文件中被定义,这里我们必须感谢Lev
Povalahev,它创建了这个文件。如果你想编译你的代码,你必须设置这个值。
<p>为了使用glFogCoordfExt,我们需要定义这个函数的指针,并在程序运行时把它指向显卡中的函数。</p></td>
<td class="r"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="bl"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td>
<td class="bc" width="100%"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td>
<td class="br"><img alt="" src="Tutorial_41_files/blank1.gif" height="28" width="28"></td></tr></tbody></table>
<pre><font class="theme">// 使用FogCoordfEXT它需要的变量</font>
#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 <font class="theme">// 从GLEXT.H得到的值</font>
#define GL_FOG_COORDINATE_EXT 0x8451
typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); <font class="theme">// 声明雾坐标函数的原形</font>
PFNGLFOGCOORDFEXTPROC glFogCoordfEXT = NULL; <font class="theme">// 设置雾坐标函数指针为NULL</font>
GLuint texture[1]; <font class="theme">// 纹理</font>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -