⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tutorial_06.htm

📁 如果你相信它就好好学学吧,同样这里也只是个入门
💻 HTM
📖 第 1 页 / 共 4 页
字号:
</tbody>
</table>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	if (File)								<font color="#ffffaa">// 文件存在么?</font>
	{
		fclose(File);							<font color="#ffffaa">// 关闭句柄</font>
		return auxDIBImageLoad(Filename);				<font color="#ffffaa">// 载入位图并返回指针</font>
	}
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">如果我们不能打开文件,我们将返回NULL。这意味着文件无法载入。程序在后面将检查文件是否已载入。如果没有,我们将退出程序并弹出错误消息。</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	return NULL;								<font color="#ffffaa">// 如果载入失败,返回 NULL</font>
}
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">下一部分代码载入位图(调用上面的代码)并转换成纹理。</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>int LoadGLTextures()								<font color="#ffffaa">// 载入位图(调用上面的代码)并转换成纹理</font>
{
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">然后设置一个叫做 Status 的变量。我们使用它来跟踪是否能够载入位图以及能否创建纹理。 
        Status 缺省设为 FALSE (表示没有载入或创建任何东东)。</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	int Status=FALSE;							<font color="#ffffaa">// 状态指示器</font>
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">现在我们创建存储位图的图像记录。次记录包含位图的宽度、高度和数据。</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	AUX_RGBImageRec *TextureImage[1];					<font color="#ffffaa">// 创建纹理的存储空间</font>
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">清除图像记录,确保其内容为空</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	memset(TextureImage,0,sizeof(void *)*1);				<font color="#ffffaa">// 将指针设为 NULL</font>
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">现在载入位图,并将其转换为纹理。 TextureImage[0]=LoadBMP("Data/NeHe.bmp") 
        调用 LoadBMP() 的代码。载入 Data 目录下的 NeHe.bmp 位图文件。如果一切正常,图像数据将存放在 TextureImage[0] 
        中, Status 被设为 TRUE ,然后我们开始创建纹理。</td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_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_06_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
<font color="#aaffaa" size="3"> 
<pre>	<font color="#ffffaa">// 载入位图,检查有无错误,如果位图没找到则退出</font>
	if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))
	{
		Status=TRUE;							<font color="#ffffaa">// 将 Status 设为 TRUE</font>
</pre>
</font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_06_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_06_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_06_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_06_files/l.gif"><img src="Tutorial_06_files/l.gif" height="28" width="28"></td>
      <td valign="top" width="100%">现在使用中 TextureImage[0] 的数据创建纹理。第一行 glGenTextures(1, 
        &amp;texture[0]) 告诉OpenGL我们想生成一个纹理名字(如果您想载入多个纹理,加大数字)。值得注意的是,开始我们使用 GLuint 
        texture[1] 来创建一个纹理的存储空间,您也许会认为第一个纹理就是存放在 &amp;texture[1] 中的,但这是错的。正确的地址应该是 
        &amp;texture[0] 。同样如果使用 GLuint texture[2] 的话,第二个纹理存放在 texture[1] 中。『译者注:学C的,在这里应该没有障碍,数组就是从零开始的嘛。』
        <p>第二行 glBindTexture(GL_TEXTURE_2D, texture[0]) 告诉OpenGL将纹理名字 texture[0] 
          绑定到纹理目标上。2D纹理只有高度(在 Y 轴上)和宽度(在 X 轴上)。主函数将纹理名字指派给纹理数据。本例中我们告知OpenGL, 
          &amp;texture[0] 处的内存已经可用。我们创建的纹理将存储在 &amp;texture[0] 的 指向的内存区域。</p></td>
    <td background="Tutorial_06_files/r.gif"><img src="Tutorial_06_files/r.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -