用QtCreator开发OpenGL游戏

来源:互联网 发布:淘宝单品爆款技巧 编辑:程序博客网 时间:2024/05/23 01:56

QtCreator开发OpenGL游戏

自从接触了Linux之后,我就一直想开发跨WindowsLinux的游戏程序。不过以前介绍游戏开发的书籍多是在Windows下开发的,在Linux下开发又困难重重。直到一天,Qt进入我的视线。

关注Qt已经两年了,现在还非常遗憾没有早点学习QtQt这个项目给我们带来的不仅仅是一个跨平台的解决方案,还给我们带来了跨平台的开发环境——QtCreator

我非常喜欢QtCreator。它比我熟悉的另一款IDE——CodeBlocks要好。为什么呢?因为QtCreator界面很简约,对于我们这些苛刻的程序员来说,它是非常友好的。此外QtCreator一直在发展,虽然人们看到除了开发Qt应用程序以外,似乎只能跑跑控制台程序,但是聪明的开发者怎么会局限于这些呢?比如说我,就拿QtCreator去做了其它事。

这里有两个我用QtCreator环境开发的基于OpenGL的小程序(免费下载):

OpenGL下的Alpha混合自动生成迷宫和迷宫自动寻路

好了,介绍一下如何在Linux下用QtCreator开发OpenGL程序。首先OpenGL的开发环境是必须安装的。这里假设你已经有了gl头文件和库(事实上一个不含gl头文件和库的Linux发行版是非常罕见的),我们需要安装的是glut开发库。开发glut需要依次在终端上输入以下命令:

sudoapt-get install mesa-common-dev

sudoapt-get install freeglut3

sudoapt-get install freeglut3-dev

等待网络上下载相关的头文件和库就好了。随后到Qt项目的官网去下载Qt库和QtCreator。嗯,以前(诺基亚时代)的Qt开发包和IDE是打包在一起的,不知道在Digia掌管下怎么会分开下载呢……先安装Qt库吧,然后安装QtCreator(这里为什么要安装Qt库的原因是Qt库提供了一系列工具链,比如说很方便的qmake,而QtCreator几乎是要依靠qmake来运转的)。下载完安装后基本上就可以使用它来开发基于OpenGL+glut的游戏了。下面是我开发的截图(Ubuntu下):


如果是非debian系列的Linux发行版可以到mesa的官网去下载适合你的rpm包或tar.gz包。


下面介绍一下如何Windows下开发OpenGL程序。同样地,需要下载编译器,要知道Windows是不给你自带编译器的,需要minGW编译器或者VS2008/VS2010编译器。这里我选择了minGW编译器,因为它就是GNUWindows下的实现嘛。你看,编译器跨平台、IDE跨平台,我们的代码怎么不能跨平台呢(编代码的时候有些情况还是要注意平台相关)!随后同样地下载Qt库和QtCreator,进行安装。安装完毕后简单地配置一下Qt工具链和Qt版本,配置好了之后就可以使用了。

慢着,还没有安装glut呢。glutwindows下的开发包一大堆,随便去哪个地方下载吧。下载完后将glut.h放在MinGW/include/GL里面,glut.libglut32.lib放在MinGW/lib里面,glut.dllglut32.dll可以放在Windows/system32里面,也可以随着程序一起发布。

下面是我开发的截图(Windows8下):


好了,现在开始编写OpenGL程序了。嗯,首先是编码,编码要注意一点,就是在windows下所有cpp文件都要包含windows.h头文件(这是Windows+minGW+OpenGL编程的硬性规定),否则编译虽然没有错误,可是链接却通不过,我就为此垂头丧气了好几回呢。然后呢,编代码部分我就不多说了,大家看看什么书都会的。

说到链接,这里可有学问了。在gcc/minGW下链接程序,不仅链接的库名和路径要正确,而且还要注意链接库的先后顺序。否则怎么样也链接通不过(minGW下尤其如此)!这里我说一下,按照glutgluopengl的链接顺序链接是正确的,否则我不敢保证其正确性。另外,如果你有一个静态链接库用到了OpenGL,那么你的静态链接库一定要写到上述库的前面。下面是我的一个.pro文件的内容,注意蓝色底纹的部分。

# Made By JiangcaiyangHEADERS += \    Maze.h \    Math3D.h \    Logo.h \    KeyEvent.h \    GLWidget.h \    MazeStep.h \    LuaInclude.hSOURCES += \    Maze.cpp \    Math3D.cpp \    main.cpp \    KeyEvent.cpp \    GLWidget.cpp \    MazeStep.cpp# 生成程序的名字TARGET = Maze2Dunix {# 适用于Unix/Linux    LIBS += $${_PRO_FILE_PWD_}/libLogo_X11.a \            $${_PRO_FILE_PWD_}/libLua_X11.a \            -lglut -lGLU}win32 {# 适用于Windows    DEFINES += _WIN32    LIBS += $${_PRO_FILE_PWD_}/libLogo_win32.a \            $${_PRO_FILE_PWD_}/libLua_win32.a \            -lglut32 -lglu32 -lopengl32}

此外,qmake的其它指令还是值得我们学习的,大家可以参考Qt文档或者相关的资料。


程序编完了,就等发布OpenGL程序了。这里我们仍然分LinuxWindows两种情况讨论。在Linux下发布程序需要准备glut.so.3库和你的程序。最好写一个shell脚本,将LD_LIBRARY_PATH加上当前目录。下面是一个示例的shell文件。

#!/bin/sh

if[ -n "." ] ; then

if[ "${LD_LIBRARY_PATH+set}" = "set" ] ; then

exportLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:."

else

exportLD_LIBRARY_PATH="."

fi

fi

chmod+x MyApp

exec./MyApp

三者俱全,即可发布!


Windows下发布程序比在Linux下还要简单,将glut.dll/glut32.dll和应用程序放在同一个目录下就好了。


下面是我写的两个项目的源代码,如果你有足够分数且想尝试一下的话,嗯,下载吧!

OpenGLAlpha混合自动生成迷宫和迷宫自动寻路

原创粉丝点击