您的位置:首页 > 运维架构

vs2005中第一个opengl程序配置过程

2012-02-17 14:38 288 查看
转载自 http://www.cnblogs.com/songlotus/articles/965368.html
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

学习OpenGL前的准备工作

第一步,选择一个编译环境

选择Visual Studio 2005作为学习OpenGL的环境。

第二步,配置OpenGL环境

具体做法在前一篇中。建议将相应文件放到VC的文件夹下,而不是PlatformSDK中。

第三步,安装GLUT工具包

GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。

Windows环境下的GLUT下载地址:(大小约为150k)
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
无法从以上地址下载的话请使用下面的连接:
http://upload.programfan.com/upfile/200607311626279.zip
Windows环境下安装GLUT的步骤:

1、将下载的压缩包解开,将得到5个文件

2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。

3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。

4、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)

第四步,建立一个OpenGL工程

这里以VisualStudio2005为例。

选择File->New->Project,然后选择Win32 Console Application,选择一个名字,然后按OK。

在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。

然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c来作为文件结尾。

一个简单的OpenGL程序如下:

#include <GL/glut.h>  //需要包含头文件#include <GL/glut.h>,这是GLUT的头文件。本来OpenGL程序一般还要包含<GL/gl.h>和<GL/glu.h>,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含。

void myDisplay(void)

{

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0.0f,1.0f,0.0f);

glRectf(-0.5f, -0.5f, 0.5f, 0.5f); //画一个绿色的正方形

glFlush();

}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutInitWindowPosition(100, 100);

glutInitWindowSize(400, 400);

glutCreateWindow("第一个OpenGL程序");

glutDisplayFunc(&myDisplay);

glutMainLoop();

return 0;

}

编译执行就可以了。
出现效果如下图



转载:

引用
怎么把那个DOS窗口去掉啊?



答:首先,那个窗口不叫DOS窗口,而叫“命令行窗口”。

如果使用GLUT的话,最好还是保留那个窗口,因为如果在使用GLUT过程中有任何错误或者警告,都会直接显示到命令行窗口——如果你绘制图形失败,多半可以根据命令行窗口中的信息找到一点原因。这样会给我们带来方便。

另外,使用GLUT可以做到平台无关。也就是说,虽然我们现在讲的是Windows下面的编程,但这些代码拿到Linux, Apple Macintosh,IBM OS/2或者其它的窗口系统,都可以被正确的编译并执行(需要下载并安装相应版本的GLUT),不需要修改代码。如果需要去掉“命令行窗口”

如果你真的感到“命令行窗口”很不爽,可以在建立工程时选择“Win32 Application”,而不是“Win32 Console Application”。(对于已经建好的工程,需要在Projcet(项目)->Properties(属性)-> Configuration Properties(配置属性)->Linker(链接器)->System(系统)那个窗口里面,把SubSystem选项由 Console改为Windows),并在程序开始时使用WinMain作为程序入口,而不是main。然后,你还需要一些Win32的编程基础。如果你不介意的话,把下面的代码抄下来也可以。



没有配置直接黏贴运行会出现下面错误



#include <windows.h>

#include <GL/glut.h>

void myDisplay(void)

{

glClear(GL_COLOR_BUFFER_BIT);

glRectf(-0.5f, -0.5f, 0.5f, 0.5f);

glFlush();

}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev,

PSTR CmdLine, int iCmdShow)

{

int argc = 1;

char *argv[] = {"OpenGL Application"};

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutInitWindowPosition(100, 100);

glutInitWindowSize(400, 400);

glutCreateWindow("第一个OpenGL程序");

glutDisplayFunc(&myDisplay);

glutMainLoop();

return 0;

}

出现效果如下图



注意这个程序和前面的示例所不同的地方:

1、多加了头文件:#include <windows.h>。

2、main变成了WinMain,并且函数的参数有所不同。

3、在WinMain中,定义了假的argc和argv,方便使用glutInit函数。虽然看起来有些别扭,但总算是成功的将GLUT给初始化好了。

建议:GLUT在学习的开始时期会给查错带来方便,因此使用GLUT,并且打开命令行是比较好的做法。当我们不再需要GLUT,打算一切自己干时,再来考虑如何写一个不带命令行的程序,这样可能会比较合适。

以下是运行中配置最关键的出现可查看
错误 4 fatal error LNK1120: 2 个无法解析的外部命令D:\My Documents\Visual Studio 2005\Projects\win32Application\model\Debug\model.exe

错误 2 error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 Opengl.obj

错误 3 error LNK2019: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8,该符号在函数 _glutCreateWindow_ATEXIT_HACK@4 中被引用 Opengl.obj

可以参考这些信息
VS2005下使用opengl的配置问题

项目 -->选择属性 C\C++-->preprocessor(预处理器)-->preprocessor definition(预处理器定义)添加GLUT_BUILDING_LIB,中间用分号隔开,然后点击linker(链接器)--

>input(输入)--> additional dependencies(附加依赖项)添加glut32.lib Opengl32.lib Glu32.lib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: