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

📄 tutorial_06.htm

📁 如果你相信它就好好学学吧,同样这里也只是个入门
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<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>
	glLoadIdentity();							<font color="#ffffaa">// 重置当前的模型观察矩阵</font>
	glTranslatef(0.0f,0.0f,-5.0f);						<font color="#ffffaa">// 移入屏幕 5 个单位</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%">下面三行使立方体绕X、Y、Z轴旋转。旋转多少依赖于变量 xrot , yrot 和 zrot 
        的值。</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>	glRotatef(xrot,1.0f,0.0f,0.0f);						<font color="#ffffaa">// 绕X轴旋转</font>
	glRotatef(yrot,0.0f,1.0f,0.0f);						<font color="#ffffaa">// 绕Y轴旋转</font>
	glRotatef(zrot,0.0f,0.0f,1.0f);						<font color="#ffffaa">// 绕Z轴旋转</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%">下一行代码选择我们使用的纹理。如果您在您的场景中使用多个纹理,您应该使用来 glBindTexture(GL_TEXTURE_2D, 
        texture[ 所使用纹理对应的数字 ]) 选择要绑定的纹理。当您想改变纹理时,应该绑定新的纹理。有一点值得指出的是,您不能在 glBegin() 
        和 glEnd() 之间绑定纹理,必须在 glBegin() 之前或 glEnd() 之后绑定。注意我们在后面是如何使用 glBindTexture 
        来指定和绑定纹理的。</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>	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_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%">为了将纹理正确的映射到四边形上,您必须将纹理的右上角映射到四边形的右上角,纹理的左上角映射到四边形的左上角,纹理的右下角映射到四边形的右下角,纹理的左下角映射到四边形的左下角。如果映射错误的话,图像显示时可能上下颠倒,侧向一边或者什么都不是。
        <p>glTexCoord2f 的第一个参数是X坐标。 0.0f 是纹理的左侧。 0.5f 是纹理的中点, 1.0f 是纹理的右侧。 glTexCoord2f 
          的第二个参数是Y坐标。 0.0f 是纹理的底部。 0.5f 是纹理的中点, 1.0f 是纹理的顶部。</p>
        <p>所以纹理的左上坐标是 X:0.0f,Y:1.0f ,四边形的左上顶点是 X: -1.0f,Y:1.0f 。其余三点依此类推。</p>
        <p>试着玩玩 glTexCoord2f 的X,Y坐标参数。把 1.0f 改为 0.5f 将只显示纹理的左半部分,把 0.0f 改为 0.5f 
          将只显示纹理的右半部分。</p></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"> 
</font><pre><font color="#aaffaa" size="3">	glBegin(GL_QUADS);
		<font color="#ffffaa">// 前面</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
		<font color="#ffffaa">// 后面</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		<font color="#ffffaa">// 顶面</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		<font color="#ffffaa">// 底面</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		<font color="#ffffaa">// 右面</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		<font color="#ffffaa">// 左面</font>
		glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左下</font>
		glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右下</font>
		glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);	<font color="#ffffaa">// 纹理和四边形的右上</font>
		glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);	<font color="#ffffaa">// 纹理和四边形的左上</font>
	glEnd();
</font></pre>
 
<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%">现在增加 xrot , yrot 和 zrot 的值。尝试变化每次各变量的改变值来调节立方体的旋转速度,或改变+/-号来调节立方体的旋转方向。</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>	xrot+=0.3f;								<font color="#ffffaa">// X 轴旋转</font>
	yrot+=0.2f;								<font color="#ffffaa">// Y 轴旋转</font>
	zrot+=0.4f;								<font color="#ffffaa">// Z 轴旋转</font>
	return true;								<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%">现在您应该比较好的理解纹理映射(贴图)了。您应该掌握了给任意四边形表面贴上您所喜爱的图像的技术。一旦您对2D纹理映射的理解感到自信的时候,试试给立方体的六个面贴上不同的纹理。
        <p>当您理解纹理坐标的概念后,纹理映射并不难理解。!如果您有什么意见或建议请给我EMAIL。如果您认为有什么不对或可以改进,请告诉我。</p>
       <table border="1" width="100%">
  <tbody><tr>
    <td width="27%"><img src="Tutorial_06_files/logo%25203.jpg" align="middle" height="200" width="209"></td>
    <td width="73%">版权与使用声明:<br>
      我是个对学习和生活充满激情的普通男孩,在网络上我以DancingWind为昵称,我的联系方式是zhouwei02@mails.tsinghua.edu.cn,如果你有任何问题,都可以联系我。
      <p>引子<br>
网络是一个共享的资源,但我在自己的学习生涯中浪费大量的时间去搜索可用的资料,在现实生活中花费了大量的金钱和时间在书店中寻找资料,于是我给自己起了
个昵称DancingWind,其意义是想风一样从各个知识的站点中吸取成长的养料。在飘荡了多年之后,我决定把自己收集的资料整理为一个统一的资源库。</p>
      <p>版权声明<br>
所有DancingWind发表的内容,大多都来自共享的资源,所以我没有资格把它们据为己有,或声称自己为这些资源作出了一点贡献。故任何人都可以复
制,修改,重新发表,甚至以自己的名义发表,我都不会追究,但你在做以上事情的时候必须保证内容的完整性,给后来的人一个完整的教程。最后,任何人不能以
这些资料的任何部分,谋取任何形式的报酬。</p>
      <p>发展计划<br>
        在国外,很多资料都是很多人花费几年的时间慢慢积累起来的。如果任何人有兴趣与别人共享你的知识,我很欢迎你与我联系,但你必须同意我上面的声明。</p>
                <p>感谢<br>
                  感谢我的母亲一直以来对我的支持和在生活上的照顾。<br>
                  感谢我深爱的女友田芹,一直以来默默的在精神上和生活中对我的支持,她甚至把买衣服的钱都用来给我买书了,她真的是我见过的最好的女孩,希望我能带给她幸福。</p>
                <p>资源下载: <br>
                  文档 <a href="http://www.owlei.com/DancingWind/Res/mht/NeHe%20OpenGL%20Chinese%20Course%2006.mht">网页格式</a> 
                  <a href="http://www.owlei.com/DancingWind/Res/pdf/OpenGL_Nehe_Course_Tutorial_06.pdf">PDF格式</a><br>
                  源码 <a href="http://www.owlei.com/DancingWind/Res/Src/06_Texture.rar">RAR格式</a></p></td>
  </tr>
</tbody></table> 
		<table border="0" width="100%">
<tbody>
      <tr>
              <td align="left" width="50%"><a href="http://www.owlei.com/DancingWind/Course/Tutorial_05.htm"><b><font size="-1">&lt; 
                第05课</font></b></a></td>
              <td align="right" width="50%"><a href="http://www.owlei.com/DancingWind/Course/Tutorial_07.htm"><b><font size="-1">第07课 
                &gt;</font></b></a></td>
      </tr>
</tbody>
    </table>
    </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>

</center></body></html>

⌨️ 快捷键说明

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