📄 tutorial_07.htm
字号:
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">如果lp的值是false的话,意味着L键还没按下,或者已经松开了,接着lp将被设为TRUE。同时检查这两个条件的原因是为了防止L键被按住后,这段代码被反复执行,并导致窗体不停闪烁。<br>
lp设为true之后,计算机就知道L键按过了,我们则据此可以切换光源的开/关:布尔变量light控制光源的开关。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> lp=TRUE; <font color="#ffffaa">// lp 设为 TRUE</font>
light=!light; <font color="#ffffaa">// 切换光源的 TRUE/FALSE</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%"><font face="arial" size="-1">Now we check to see what light
ended up being. The first line translated to english means: If light equals false. So if
you put it all together, the lines do the following: If light equals false, disable
lighting. This turns all lighting off. The command 'else' translates to: if it wasn't
false. So if light wasn't false, it must have been true, so we turn lighting on. </font></td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (!light) <font color="#ffffaa">// 如果没有光源</font>
{
glDisable(GL_LIGHTING); <font color="#ffffaa">// 禁用光源</font>
}
else <font color="#ffffaa">// 否则</font>
{
glEnable(GL_LIGHTING); <font color="#ffffaa">// 启用光源</font>
}
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">下面的代码查看是否松开了"L"键。如果松开,变量lp将设为false。这意味着"L"键没有按下。如果不作此检查,光源第一次打开之后,就无法再关掉了。计算机会以为"L"键一直按着呢。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (!keys['L']) <font color="#ffffaa">// L键松开了么?</font>
{
lp=FALSE; <font color="#ffffaa">// 若是,则将lp设为FALSE</font>
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">然
后对"F"键作相似的检查。如果有按下"F"键并且"F"键没有处于按着的状态或者它就从没有按下过,将变量fp设为true。这意味着这个键正被按着
呢。接着将filter变量加一。如果filter变量大于2(因为这里我们的使用的数组是texture[3],大于2的纹理不存在),我们重置
filter变量为0。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (keys['F'] && !fp) <font color="#ffffaa">// F键按下了么?</font>
{
fp=TRUE; <font color="#ffffaa">// fp 设为 TRUE</font>
filter+=1; <font color="#ffffaa">// filter的值加一</font>
if (filter>2) <font color="#ffffaa">// 大于2了么?</font>
{
filter=0; <font color="#ffffaa">// 若是重置为0</font>
}
}
if (!keys['F']) <font color="#ffffaa">// F键放开了么?</font>
{
fp=FALSE; <font color="#ffffaa">// 若是fp设为FALSE</font>
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">这四行检查是否按下了PageUp键。若是的话,减少z变量的值。这样DrawGLScene函数中包含的glTranslatef(0.0f,0.0f,z)调用将使木箱离观察者更远一点。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (keys[VK_PRIOR]) <font color="#ffffaa">// PageUp按下了?</font>
{
z-=0.02f; <font color="#ffffaa">// 若按下,将木箱移向屏幕内部</font>
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">接着四行检查PageDown键是否按下,若是的话,增加z变量的值。这样DrawGLScene函数中包含的glTranslatef(0.0f,0.0f,z)调用将使木箱向着观察者移近一点。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (keys[VK_NEXT]) <font color="#ffffaa">// PageDown按下了么</font>
{
z+=0.02f; <font color="#ffffaa">// 若按下的话,将木箱移向观察者</font>
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_07_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_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_07_files/l.gif"><img src="Tutorial_07_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">现在检查方向键。按下左右方向键xspeed相应减少或增加。按下上下方向键yspeed相应减少或增加。记住在以后的教程中如果xspeed、yspeed的值增加的话,立方体就转的更快。如果一直按着某个方向键,立方体会在那个方向上转的越快。</td>
<td background="Tutorial_07_files/r.gif"><img src="Tutorial_07_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_07_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_07_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_07_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (keys[VK_UP]) <font color="#ffffaa">// Up方向键按下了么?</font>
{
xspeed-=0.01f; <font color="#ffffaa">// 若是,减少xspeed</font>
}
if (keys[VK_DOWN]) <font color="#ffffaa">// Down方向键按下了么?</font>
{
xspeed+=0.01f; <font color="#ffffaa">// 若是,增加xspeed</font>
}
if (keys[VK_RIGHT]) <font color="#ffffaa">// Right方向键按下了么?</font>
{
yspeed+=0.01f; <font color="#ffffaa">// 若是,增加yspeed</font>
}
if (keys[VK_LEFT]) <font color="#ffffaa">// Left方向键按下了么?</font>
{
yspeed-=0.01f; <font color="
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -