设置OpenGL编程环境

来源:互联网 发布:ssh登陆指定端口 编辑:程序博客网 时间:2024/04/30 22:38
译者序: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 Project,在Project Types下选择Visual C++ Projects,在Templates下选择Win32 Projects

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

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

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

  此时你会得到一个空白页,如果你现在按F5来编译和连接你的文件,你会发现因为出现连接错误而不能继续进行,你可能会看到类似下面的错误:"error LNK2019: unresolved external symbol _WinMain@16 referenced in function _WinMainCRTStartup".

不过不用担心,这是因为你没有编写任何代码。你已经学习怎样成功地建立一个VS.NET工程开始编程。

使用Visual Studio和Win32进行OpenGL编程

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

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

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")

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

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{

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

glEnable(GL_LIGHTING);
return 0;
}

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

使用Visual Studio和GLUT进行OpenGL编程

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

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

  你需要把glut.h文件放在你的Visual Studio.NET的include目录下,同时把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的头文件:

#include <GL/glut.h>
int main(int argc, char *argv[])
{
  不用担心下面调用的两个函数,第一个只是简单地测试GLUT的函数调用,第二个测试一个OpenGL函数调用,我们会在接下来的其他教程中讨论这些函数的。

glutInit(&argc, argv);
glEnable(GL_LIGHTING);
return 0;
}

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

Dev-C++

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

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

  选择File > New > Project

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

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

  main.cpp的内容:

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

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{

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

glEnable(GL_LIGHTING);
return 0;
}

  现在你已经成功建立在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的头文件,

#include <GL/glut.h>
int main(int argc, char *argv[])
{

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

glutInit(&argc, argv);
glEnable(GL_LIGHTING);
return 0;
}

  注意此时没有控制台窗口出现,而在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的头文件

#include <GL/glut.h>
int main(int argc, char *argv[])
{

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

glutInit(&argc, argv);
glEnable(GL_LIGHTING);
return 0;
}

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

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

main : main.cpp
g++ -lGL -lGLU -lglut main.cpp -o main
clean :
rm -rf main

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