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

📄 tutorial_26.htm

📁 如果你相信它就好好学学吧,同样这里也只是个入门
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<!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:link {COLOR: #ccaaff; TEXT-DECORATION: none}
A:visited {COLOR: #ccaaff; TEXT-DECORATION: none}
A:active {COLOR: #ccaaff; TEXT-DECORATION: none}
A:hover {COLOR: #ffccaa; TEXT-DECORATION: none}
</style></head><body bgcolor="#000000" text="#ffffff"><br><br>

<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td height="130" width="326"><img src="Tutorial_26_files/logo.png" height="130" width="326"></td>
    <td align="center" valign="middle" width="75%"><font color="#ffccaa" size="+3"><b><i>第26课</i></b></font></td>
  </tr></tbody></table>
  <!-- 上边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
  <tr>
    <td><img src="Tutorial_26_files/tl.jpg" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_26_files/tc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_26_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_26_files/l.gif"><img src="Tutorial_26_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_26_files/lesson26.jpg" height="180" width="240"></td>
            <td width="69%"><p><font class="head">剪裁平面,蒙板缓存和反射:</font></p>
              <p><font size="3">在这一课中你将学会如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧。</font></p></td>
          </tr>
     </tbody></table>
      </td>
	<!-- 中部右边框-->
    <td background="Tutorial_26_files/r.gif"><img src="Tutorial_26_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_26_files/bl.gif" height="28" width="28"></td>
    <td width="100%"><img src="Tutorial_26_files/bc.gif" height="28" width="100%"></td>
    <td><img src="Tutorial_26_files/br.gif" height="28" width="28"></td>
  </tr>
</tbody>
</table>
  <table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_26_files/l.png"><img src="Tutorial_26_files/l.png"></td>
    <td valign="top" width="100%">欢迎来到另一个激动人心的课程,这课的代码是Banu Cosmin所写,当然教程还是我自己写的。在这课里,我将教你创建真正的反射,基于物理的。<br>
      由于它将用到蒙板缓存,所以需要耗费一些资源。当然随着显卡和CPU的发展,这些都不是问题了,好了让我们开始吧!<br></td><td background="Tutorial_26_files/r.png"><img src="Tutorial_26_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/br.png" height="28" width="28"></td></tr></tbody></table>
<font color="#aaffaa" size="3"> </font> <font color="#aaffaa" size="3"> </font> 
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_26_files/l.png"><img src="Tutorial_26_files/l.png"></td>
    <td valign="top" width="100%">下面我们设置光源的参数</td>
    <td background="Tutorial_26_files/r.png"><img src="Tutorial_26_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre>static GLfloat	LightAmb[] = {0.7f, 0.7f, 0.7f, 1.0f};				<font color="#ffffaa">// 环境光</font>
static GLfloat	LightDif[] = {1.0f, 1.0f, 1.0f, 1.0f};				<font color="#ffffaa">// 漫射光</font>
static GLfloat	LightPos[] = {4.0f, 4.0f, 6.0f, 1.0f};				<font color="#ffffaa">// 灯光的位置</font></pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_26_files/l.png"><img src="Tutorial_26_files/l.png"></td>
    <td valign="top" width="100%">下面用二次几何体创建一个球,并设置纹理</td>
    <td background="Tutorial_26_files/r.png"><img src="Tutorial_26_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
</font><pre><font color="#aaffaa" size="3">GLUquadricObj	*q;								<font color="#ffffaa">// 使用二次几何体创建球</font>

GLfloat		xrot		=  0.0f;					<font color="#ffffaa">	// X方向的旋转角度</font>
GLfloat		yrot		=  0.0f;						<font color="#ffffaa">// Y方向的旋转角的</font>
GLfloat		xrotspeed	=  0.0f;					<font color="#ffffaa">		// X方向的旋转速度</font>
GLfloat		yrotspeed	=  0.0f;							<font color="#ffffaa">// Y方向的旋转速度</font>
GLfloat		zoom		= -7.0f;						<font color="#ffffaa">// 移入屏幕7个单位</font>
GLfloat		height		=  2.0f;						<font color="#ffffaa">// 球离开地板的高度</font>

GLuint		texture[3];							<font color="#ffffaa">// 使用三个纹理</font></font></pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_26_files/l.png"><img src="Tutorial_26_files/l.png"></td>
    <td valign="top" width="100%">ReSizeGLScene() 和LoadBMP() 没有变化</td>
    <td background="Tutorial_26_files/r.png"><img src="Tutorial_26_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3"><pre>GLvoid ReSizeGLScene(GLsizei width, GLsizei height)

AUX_RGBImageRec *LoadBMP(char *Filename)
</pre></font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_26_files/l.png"><img src="Tutorial_26_files/l.png"></td>
    <td valign="top" width="100%"><font color="#ffffff">下面的代码载入纹理</font></td>
    <td background="Tutorial_26_files/r.png"><img src="Tutorial_26_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_26_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_26_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_26_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
	
<pre>int LoadGLTextures()								<font color="#ffffaa">// 载入*.bmp文件,并转化为纹理</font>
{
    int Status=FALSE;								
    AUX_RGBImageRec *TextureImage[3];						<font color="#ffffaa">// 创建三个图象</font>
    memset(TextureImage,0,sizeof(void *)*3);					
    if ((TextureImage[0]=LoadBMP("Data/EnvWall.bmp")) &amp;&amp;				<font color="#ffffaa">// 载入地板图像</font>
        (TextureImage[1]=LoadBMP("Data/Ball.bmp")) &amp;&amp;					<font color="#ffffaa">// 载入球图像</font>
        (TextureImage[2]=LoadBMP("Data/EnvRoll.bmp")))					<font color="#ffffaa">// 载入强的图像</font>
	{
		Status=TRUE;							
		glGenTextures(3, &amp;texture[0]);					<font color="#ffffaa">// 创建纹理</font>
		for (int loop=0; loop&lt;3; loop++)				<font color="#ffffaa">	// 循环设置三个纹理参数</font>
		{
			glBindTexture(GL_TEXTURE_2D, texture[loop]);
			glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[loop]-&gt;sizeX, TextureImage[loop]-&gt;sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]-&gt;data);
			glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
			glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
		}
		for (loop=0; loop&lt;3; loop++)					
		{
			if (TextureImage[loop])					
			{
				if (TextureImage[loop]-&gt;data)			
				{
					free(TextureImage[loop]-&gt;data);		
				}
				free(TextureImage[loop]);			

⌨️ 快捷键说明

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