OpenGL教程之ZEUS教程第二课:设置OpenGL编程环境

翻译 2007年10月09日 21:54:00
 

ZEUS 教程2设置OpenGL编程环境

作者:Grant James (ZEUS)    翻译:oglmatrix

译者序:Grant James (ZEUS)OpenGL教程比较简单,基本属于入门级教程,教程中对OpenGL的使用过程讲解的极为细致,有的时候感觉都过于详细,不过对于初学者这是好事。英文教程中每篇都有相应的源码下载,如果你使用教育网不方便下载的话,也可以与我联系。

英文教程的网址:http://www.zeuscmd.com/tutorials/opengl/index.php

中文翻译网址:http://blog.csdn.net/oglmatrix/

 

简介

 

本教程将会告诉你如何在C/C++中建立使用OpenGL的编程环境。

•如果你想在Windows下并且使用微软Visual Studio.NET编程的话,请看Visual Studio.NET部分。

•如果你想在Windows下编程,但使用一个免费的编译和开发环境(Dev-C++),请看Dev-C++部分。

•如果你想在Unix / Linux环境中编程,请看Unix / Linux部分

 

Microsoft Visual Studio.NET

 

首先你需要确认已经安装Visual Studio.NET (VS.NET)

打开VS.NET,点击File > New ProjectProject Types下选择Visual C++ ProjectsTemplates下选择Win32 Projects

输入一个工程名字,比如02-SettingUpYourEnvironment之类,点击OK

这时向导就会出现,点击Application Settings选择Empty Project如果你想学习使用Win32的教程,选择Windows Application.如果你想学习使用GLUT的教程,选择Console Application.

单击Finish如果你没有在Solution Explorer窗口中看到你得测试工程,选择View > Solution ExplorerSolution ExplorerSource Files上点击右键,选择Add > New Item选择C++ File(cpp)并且键入main.cpp作为文件名,点击OK

此时你会得到一个空白页,如果你现在按F5来编译和连接你的文件,你会发现因为出现连接错误而不能继续进行,你可能会看到类似下面的错误:"error LNK2019: unresolved external symbol _WinMain@16 referenced in function _WinMainCRTStartup".
   
不过不用担心,这是因为你没有编写任何代码。你已经学习怎样成功地建立一个VS.NET工程开始编程。

如果你决定学习那些使用Win32的教程,请开始阅读Win32部分,如果你决定使用GLUT学习,请开始阅读GLUT章节。

 

使用Visual StudioWin32进行OpenGL编程

 

第一步是在main.cpp中输入以下代码,main.cpp的内容:

当链接你的OpenGL应用程序的时候,下面包含两个动态库的这两行是必需的。许多其他的源代码会告诉你怎么在IDE中配置,但把下面的代码放在你的源代码中更为简单。注意,opengl32.libglu32.lib是必需要添加的,这些在最新版本的Visual Studio.NET即将成为标准。



下面的三行是我们在使用这个教程的过程中必须包含的头文件。GL/gl.h主要是用来使用标准的OpenGL函数库,GL/glu.h是用来使用OpenGL实用库中的部分函数。





下面我们将书写一些简单的OpenGL函数。你现在不用担心这些函数,在这里调用它们是为了简单测试是否包含正确的头文件,如果你发现类似下面的错误: error LNK2019: unresolved external symbol __imp_glEnable@4 referenced in function _WinMain@16,这就表明你的.lib文件没有正确地被指定。

现在你就可以开始使用OpenGL ,Win32Visual Studio.NET.编写你的应用程序。

 

使用Visual StudioGLUT进行OpenGL编程

 

你的第一步是从Nate Robins的网站上下载GLUT包,下载二进制包,编写这个教程的时候的版本是3.7.6,因此需要下载的文件就是glut-3.7.6-bin.zip.

解压缩这个文件之后,有三个文件我们将会使用到,它们是glut.hglut32.lib glut32.dll

你需要把glut.h文件放在你的Visual Studio.NETinclude目录下,同时把glut32.lib放在你的lib目录下,这些目录的位置与你的Visual Studio安装位置有关,如果你的Visual Studio安装在“C:/Program Files/Microsoft Visual Studio .NET 2003/”目录下,那么glut的目录如下:

C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include/gl/glut.h

C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/lib/glut32.lib

当你运行已经编译的GLUT应用程序的时候需要glut32.dll文件,这个文件需要和你的应用程序放在同一个目录下,一个更为简单的方法就是把它放在“C:/windows/system32”目录下。这样你可以不必在你创建的所有应用程序的同一目录下放置glut32.dll文件。这样会导致一个问题,如果你想在另外一台机器上运行任一个你的应用程序,你需要记得把glut32.dll和你的应用程序一起拷贝。

现在是时候写一些代码了,把下面的代码放在你的main.cpp文件中。

main.cpp文件内容:

我们的第一行是包含GLUT的头文件:



不用担心下面调用的两个函数,第一个只是简单地测试GLUT的函数调用,第二个测试一个OpenGL函数调用,我们会在接下来的其他教程中讨论这些函数的。

如果所有的都很好地运行,现在你就可以使用Visual Studio.NETGLUT创建你的应用程序了。

 

Dev-C++

 

首先你应该已经安装Dev-C++,我现在使用的是Dev-C++ Version 5测试版,可以从http://www.bloodshed.net/上下载。

如果你想学习使用Win32的教程,请继续阅读Win32部分,如果你想学习使用GLUT开发的教程,请学习GLUT部分。

 

使用Dev-C++Win32进行OpenGL编程

 

选择File > New > Project

    选择标签Multimedia,接着选择OpenGL,输入02-SettingUpYourEnvironment作为工程的名字,点击OK然后选择你的工程存储的位置。

    这个工程将会生成一个文件,其中包含几行代码,删除这些代码,输入下面的代码

main.cpp的内容:

首先必须包含以下三个头文件,这是我们在整套教程中必须的。头文件GL/gl.h是用来调用OpenGL标准库的函数,GL/glu.h则是调用OpenGL实用库的一些函数。





下面将会放置一些简单的OpenGL函数,不用担心这些函数的作用,在此调用仅仅是为了测试所包含的头文件的正确性,如果你得到一个如下的错误:error LNK2019: unresolved external symbol __imp_glEnable@4 referenced in function _WinMain@16,这是因为你的OpenGL库文件放置的位置不正确,导致你不能创建一个OpenGL类型的工程。

现在你已经成功建立在Dev-C++中使用Win32编制OpenGL程序的环境。

在有些情况下,GLU实用库没有被默认设置,这时你可以选择Project > Project Options菜单,然后选择Parameters标签,在Linker框中添加-lglu32

 

使用Dev-C++GLUT进行OpenGL编程

 

首先你需要从Nigel Stewart's网站上下载Dev-C++版本的GLUT包,下载GLUT 3.7.6+,下载完成之后双击安装,然后把所需要的库文件和头文件放在你Dev-C++的安装目录下的相关位置。

点击File > New > Project,选择Multimedia标签,在安装GLUT包之后会出现一个GLUT选项,选择GLUT,输入02-SettingUpYourEnvironment作为工程的名字,点击OK然后选择你的工程存储的位置。

这个工程将会生成一个文件,其中包含几行代码,删除这些代码,输入下面的代码

main.cpp的内容:

在第一行输入GLUT的头文件,



不用担心下面的两个函数调用,第一个只是简单地测试 GLUT函数调用,第二个用来测试OpenGL函数调用,我们将在后面的教程中详细解释它们。

 

注意此时没有控制台窗口出现,而在GLUT教程中的第二课和第三课,需要控制台窗口来显示输入结果。如果你想实现这个功能的话,单击Project > Project Options或者Alt + P然后General选择Win32 Console

恭喜你,你已经知道怎么在Dev-C++中编译你的GLUT程序。

 

Unix / Linux

 

目前,所有的Unix / Linux下的教程都是采用GLUT编写,在后面的章节可能会用到其他的库。第一步你得确认已经安装GLUT,你可以通过检查你的/usr/lib目录下是否存在libglut文件来进行确认。如果没有你需要下载GLUT rpm

在我写这个教程的时候,我正在使用Fedora Core 3,这个系统中包含FreeGLUT库,它可以直接地取代 GLUT,如果你有其中的任何一个,你都能编译这些教程。

把下面的内容输入到一个main.cpp文件,

main.cpp的内容:

第一行是简单地包含GLUT的头文件



不用担心下面的两个函数调用,第一个只是简单地测试 GLUT函数调用,第二个用来测试OpenGL函数调用,我们将在后面的教程中详细解释它们。


一旦这个完成之后,我们需要创建一个Makefile文件。

这与C++教程中的Makefile的唯一不同之处在于它连接了三个新的动态库,它们分别是OpenGL库,OpenGL实用库,GLUT库。



 

现在make的话,你的程序应该能够被成功编译。你一定可以成功地在Unix / Linux上编译你的GLUT应用程序。

 

PS:余学OpenGL数月,甚感国内教程之少,故将国外教程译之,方便国人。由于本人能力有限,翻译中难免出现错误,还望各位指正!Emailoglmatrix@126.com

本教程的示例程序请在英文网站下载,抑或与我联系。

版权所有,转载请注明出处,本教程英文版权属原著作者所有。

 

【Unity3D自学记录】Unity3D插件之EasyTouch简单用法

EasyTouch使用 EasyTouch 目录[-] 一、效果图二、操作步骤1.官方文档上的步骤2.翻译一下以上的步骤3.根据官方的这些提示,自己来做一个属于自己的人物遥感控制 ...
  • hackdjh
  • hackdjh
  • 2014年07月07日 11:25
  • 1184

Opengl教程之 读取obj并绘制在picturecontrol控件内

Opengl教程之读取obj并绘制在picturecontrol控件内 By Cracent 注:本文将简单图文表述基于MFC对话框的OpenGL三维显示(picture control 类版)...
  • Cracent
  • Cracent
  • 2016年04月02日 19:20
  • 4436

VTK教程之十二 可视化基础算法-几…

因为数量数据是
  • woashizhangsi
  • woashizhangsi
  • 2014年12月12日 09:41
  • 837

jQuery EasyUI使用教程之创建复杂的树网格

树网格可以展示有限空间上附带的多列和复杂数据电子表格。本教程将演示如何将表格数据排列在分割的网格和多行表头中,以便组织共同的数据。 jQuery EasyUI最新试用版下载请猛戳>> ...
  • AABBbaby
  • AABBbaby
  • 2016年07月20日 09:51
  • 405

VTK教程之十三 可视化基础算法-位…

  位移图主要描
  • woashizhangsi
  • woashizhangsi
  • 2014年12月12日 09:38
  • 546

VTK教程之十一 可视化基础算法-方…

矢量是有大小和
  • woashizhangsi
  • woashizhangsi
  • 2014年12月12日 09:41
  • 468

VS2015安装+OpenGL环境配置及测试

VS2015安装+OpenGL环境配置及测试 由于学习《计算机图形学》(第三版)需要 ,特此进行了Visual Studio 2015(企业版)安装+OpenGL环境配置,不足之处还请见谅!...
  • wizen641372472
  • wizen641372472
  • 2016年10月30日 15:24
  • 8827

Unity教程之-Unity Attribute的使用总结

Attribute是C#的功能,在Unity中可以使用Attribute来给变量和方法增加新的特性或者功能。 举两个例子,在变量上使用[SerializeFiled]特性,可以强制让变量进行序列化,...
  • SuperMode
  • SuperMode
  • 2016年10月16日 17:01
  • 523

OpenWrt 系列教程汇总

转载地址:http://www.openwrt.org.cn/bbs/thread-60-1-1.html OpenWrt FAQ https://dev.openwrt.org.cn/wiki/...
  • qingfengtsing
  • qingfengtsing
  • 2014年09月17日 16:16
  • 21808

一步步学OpenGL(17) -《环境光》

教程17环境光原文: http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.htmlCSDN完整版专栏: http://blog.csdn.net...
  • cordova
  • cordova
  • 2016年10月20日 22:59
  • 3298
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL教程之ZEUS教程第二课:设置OpenGL编程环境
举报原因:
原因补充:

(最多只允许输入30个字)