📄 tutorial_12.htm
字号:
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">贴图纹理的代码和之前教程里的代码是一样的。我们需要一个可以贴在立方体上的纹理。我决定使用mipmapping处理让纹理看上去光滑,因为我讨厌看见像素点。纹理的文件名是“cube.bmp”,存放在data目录下。<br></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (TextureImage[0]=LoadBMP("Data/Cube.bmp")) </pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%"><p>改变窗口大小的代码和第六课是一样的。</p>
<p> 初始化的代码只有一点改变,加入了一行BuildList()。请注意代码的顺序,先读入纹理,然后建立显示列表,这样当我们建立显示列表的时候就可以将纹理贴到立方体上了。<br>
</p></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre>BuildLists(); <font color="#ffffaa">// 创建显示列表</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%"><p>接下来的三行使灯光有效。Light0一般来说是在显卡中预先定义过的,如果Light0不工作,把下面那行注释掉好了。</p>
<p> 最后一行的GL_COLOR_MATERIAL使我们可以用颜色来贴纹理。如果没有这行代码,纹理将始终保持原来的颜色,glColor3f(r,g,b)就没有用了。总之这行代码是很有用的。</p></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> glEnable(GL_LIGHT0); <font color="#ffffaa">// 使用默认的0号灯</font>
glEnable(GL_LIGHTING); <font color="#ffffaa">// 使用灯光</font>
glEnable(GL_COLOR_MATERIAL); <font color="#ffffaa">// 使用颜色材质</font>
</pre>
</font> <font color="#aaffaa" size="3"> </font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%"><p><font face="arial">现在到了绘制代码的地方了,我们还是和以前一样,以清除背景颜色为开始。
</font></p>
<p><font face="arial">接着把纹理绑定到立方体,我可以把这些代码加入到显示列表中,但我还是把它留在了显示列表外边,这样我可以随便设置纹理。</font></p>
</td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre>int DrawGLScene(GLvoid) <font color="#ffffaa">// 绘制操作开始</font>
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); <font color="#ffffaa">// 清除背景颜色</font>
glBindTexture(GL_TEXTURE_2D, texture[0]); <font color="#ffffaa">// 选择纹理</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">现在到了真正有趣的地方了。用一个循环,循环变量用于改变Y轴位置,在Y轴上画5个立方体,所以用从1到5的循环。<br></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> for (yloop=1;yloop<6;yloop++) <font color="#ffffaa">// 沿Y轴循环</font>
{
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">另外用一个循环,循环变量用于改变X轴位置。每行上的立方体数目取决于行数,所以循环方式如下。<br></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> for (xloop=0;xloop<yloop;xloop++) <font color="#ffffaa">// 沿X轴循环</font>
{
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_12_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_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_12_files/l.gif"><img src="Tutorial_12_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%"><font face="arial">重置模型变化矩阵</font></td>
<td background="Tutorial_12_files/r.gif"><img src="Tutorial_12_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_12_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_12_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_12_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> glLoadIdentity(); <font color="#ffffaa">// 重置模型变化矩阵</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -