📄 tutorial_03.htm
字号:
<!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">
<center><br>
<p><br>
</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td height="130" width="326"><img src="Tutorial_03_files/logo.png" height="130" width="326"></td>
<td align="center" valign="center" width="75%"><div align="center"><font color="#ffccaa" size="+3"><b><i>第03课</i></b></font></div></td>
</tr>
</tbody>
</table>
<!-- 上边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_03_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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_03_files/l.gif"><img src="Tutorial_03_files/l.gif" height="28" width="28"></td>
<!-- 中部文字部分-->
<td valign="top" width="100%">
<table border="0" width="100%">
<tbody><tr>
<td width="29%"><img src="Tutorial_03_files/lesson03.jpg" height="180" width="240"></td>
<td width="71%"><p><font class="head">添加颜色:</font></p>
<p><font size="3">作为第二课的扩展,我将叫你如何使用颜色。你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色。</font></p></td>
</tr>
</tbody></table>
</td>
<!-- 中部右边框-->
<td background="Tutorial_03_files/r.gif"><img src="Tutorial_03_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_03_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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_03_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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_03_files/l.gif"><img src="Tutorial_03_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">上一课中我教给您三角形和四边形的绘制方法。这一课我将教您给三角形和四边形添加2种不同类型的着色方法。使用Flat
coloring(单调着色)给四边形涂上固定的一种颜色。使用Smooth coloring(平滑着色)将三角形的三个顶点的不同颜色混合在一起,创建漂亮的色彩混合。
<p>继续在上节课的DrawGLScene例程上修改。下面将整个例程重写了一遍。如果您计划修改上节课的代码,只需用下面的代码覆盖原来的DrawGLScene()就可以了。</p></td>
<td background="Tutorial_03_files/r.gif"><img src="Tutorial_03_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_03_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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>
glLoadIdentity(); <font color="#ffffaa"> // 重置模型观察矩阵</font>
glTranslatef(-1.5f,0.0f,-6.0f); <font color="#ffffaa">// 左移 1.5 单位,并移入屏幕 6.0</font>
glBegin(GL_TRIANGLES); <font color="#ffffaa"> // 绘制三角形</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_03_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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_03_files/l.gif"><img src="Tutorial_03_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">如果您还记得上节课的内容,这段代码在屏幕的左半部分绘制三角形。下一行代码是我们第一次使用命令glColor3f(r,g,b)。括号中的三个参数依次是红、绿、蓝三色分量。取值范围可以从0,0f到1.0f。类似于以前所讲的清除屏幕背景命令。
<p>我们将颜色设为红色(纯红色,无绿色,无蓝色)。接下来的一行代码设置三角形的第一个顶点(三角形的上顶点),并使用当前颜色(红色)来绘制。从现在开始所有的绘制的对象的颜色都是红色,直到我们将红色改变成别的什么颜色。</p></td>
<td background="Tutorial_03_files/r.gif"><img src="Tutorial_03_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_03_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> glColor3f(1.0f,0.0f,0.0f); <font color="#ffffaa"> // 设置当前色为红色</font>
glVertex3f( 0.0f, 1.0f, 0.0f); <font color="#ffffaa">// 上顶点</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_03_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_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_03_files/l.gif"><img src="Tutorial_03_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">第一个红色顶点已经设置完毕。接下来我们设置第二个绿色顶点。三角形的左下顶点被设为绿色。</td>
<td background="Tutorial_03_files/r.gif"><img src="Tutorial_03_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_03_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_03_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_03_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> glColor3f(0.0f,1.0f,0.0f); <font color="#ffffaa">// 设置当前色为绿色</font>
glVertex3f(-1.0f,-1.0f, 0.0f); <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 + -