<!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_01_files/logo.png" height="130" width="326"></td>
<td align="center" valign="middle" width="75%"><font color="#ffccaa" size="+3"><b><i>第01课</i></b></font></td>
</tr></tbody></table>
<!-- 上边框-->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_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_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<!-- 中部文字部分-->
<td valign="top" width="100%">
<table border="0" width="100%">
<tbody><tr>
<td width="32%"><img src="Tutorial_01_files/lesson01.jpg" height="180" width="240"></td>
<td width="68%"><p><font class="head">创建一个OpenGL窗口:</font></p>
<p><font size="3">在这个教程里,我将教你在Windows环境中创建OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架.<br>
<br>
理解OpenGL如何工作非常重要,你可以在教程的末尾下载源程序,但我强烈建议你至少读一遍教程,然后再开始编程. </font></p></td>
</tr>
</tbody></table>
</td>
<!-- 中部右边框-->
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_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_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_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_01_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_01_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_01_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_01_files/l.png"><img src="Tutorial_01_files/l.png"></td>
<td valign="top" width="100%">欢迎来到我的 OpenGL教程。我是个对 OpenGL充满激情的普通男孩! 我第一次听说 OpenGL是
3Dfx 发布 Voodoo1 卡的 OpenGL硬件加速驱动的时候。我立刻意识到 OpenGL是那种必须学习的东西。不幸的是当时很难从书本或网络上找到关于
OpenGL的讯息。我花了 N 个 小时来调试自己书写的代码,甚至在 IRC和 EMail 上花更多的时间来恳求别人帮忙。但我发现那 些懂得 OpenGL
高手们保留了他们的精华,对共享知识也不感兴趣。实在让人灰心 ! <br>
我创建这个网站的目的是为了帮助那些对 OpenGL有兴趣却又需要帮助的人。在我的每个教程中,我都会尽可能详细的来解释每一行代码的作用。我会努力让我的代码更简单(您无需学习
MFC代码)!就算您是个VC 、OPENGL的绝对新手也应该可以读通代码,并清楚的知道发生了什么。我的站点只是许多提供 OpenGL教程的站点中的一个。如果您是
OpenGL的高级程序员的话,我的站点可能太简单了,但如果您才开始的话,我想这个站点会教会您许多东西!
<p>教
程的这一节在2000年一月彻底重写了一遍。将会教您如何设置一个 OpenGL窗口。它可以只是一个窗口或是全屏幕的、可以任意
大小、任意色彩深度。此处的代码很稳定且很强大,您可以在您所有的OpenGL项目中使用。我所有的教程都将基于此节的代码!所有的错误都有被报告。所以
应该没有内存泄漏,代码也很容易阅读和修改。感谢Fredric Echols对代码所做的修改!</p>
<p>现在就让我们直接从代码开始吧。第一件事是打开VC然后创建一个新工程。如果您不知道如何创建的话,您也许不该学习OpenGL,而应该先学学VC。某些版本的VC需要将
bool 改成 BOOL , true 改成 TRUE , false 改成 FALSE ,请自行修改。</p>
<p>在您创建一个新的Win32程序(不是console控制台程序)后,您还需要链接OpenGL库文件。在VC中操作如下:Project->
Settings,然后单击LINK标签。在"Object/Library Modules"选项中的开始处(在 kernel32.lib
前)增加 OpenGL32.lib GLu32.lib 和 GLaux.lib 后单击OK按钮。现在可以开始写您的OpenGL程序了。</p>
<p>代码的前4行包括了我们使用的每个库文件的头文件。如下所示:<br>
</p></td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_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_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre>#include <windows.h><font color="#ffffaa"> // Windows的头文件</font>
#include <glew.h> <font color="#ffffaa">// 包含最新的gl.h,glu.h库</font>
#include <glut.h> <font color="#ffffaa">// 包含OpenGL实用库</font></pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_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_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">接下来您需要设置您计划在您的程序中使用的所有变量。本节中的例程将创建一个空的OpenGL窗口,因此我们暂时还无需设置大堆的变量。余下需要设置的变量不多,但十分重要。您将会在您以后所写的每一个OpenGL程序中用到它们。<br>
第一行设置的变量是Rendering Context(着色描述表)。每一个OpenGL都被连接到一个着色描述表上。着色描述表将所有的OpenGL调用命令连接到Device
Context(设备描述表)上。我将OpenGL的着色描述表定义为 hRC 。要让您的程序能够绘制窗口的话,还需要创建一个设备描述表,也就是第二行的内容。Windows的设备描述表被定义为
hDC 。DC将窗口连接到GDI(Graphics Device Interface图形设备接口)。而RC将OpenGL连接到DC。第三行的变量
hWnd 将保存由Windows给我们的窗口指派的句柄。最后,第四行为我们的程序创建了一个Instance(实例)。</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_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_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre>HGLRC hRC=NULL; <font color="#ffffaa">// 窗口着色描述表句柄</font>
HDC hDC=NULL; <font color="#ffffaa">// OpenGL渲染描述表句柄</font>
HWND hWnd=NULL; <font color="#ffffaa">// 保存我们的窗口句柄</font>
HINSTANCE hInstance; <font c
评论0