Tags: OpenGL

RockyRay第一个Demo即将完成

之前由于准备考研复试、毕业答辩和吃散伙饭忙活了好一阵子,现在总算是有点喘息的时间来做点其他事情了。这第一件事情就是继续RockyRay的开发。貌似我以前还没有在blog中提到过RockyRay。

所谓RockyRay是我和小强精力过剩蛋疼无聊的时候满怀着拯救世界解放他人并把爱与和平带给全人类的信念做的一个RPG游戏。恩恩,这也是小强的毕设。因为明天就是小强答辩的日子,结果他在deadline到之前终于完成了第一个场景模型、男主角的模型,以及一些设定图和其他一些CG。第一个游戏场景的Demo已经编译出来,不过还没有打包。明天我就会把整个Demo打包提供下载。整个程序使用Ogre+OgreMax+OpenAL+LuaPlus+Boost,从三月份开始弄到现在(其实中间有将近2个月没有更新)。


感兴趣的童鞋可以先在下面的网址看看小强为RockyRay做的一些2D作品:

http://code.google.com/p/rockyray/



探险

看!灰机!

主角们

排排站,吃果果

GLSL编程必备程序库

因为做毕设的原因,最近一段时间都在写一个全局光照的shader。期间用了不少开源库,把自己用了以后的经验大致罗列如下。

图像载入

图像载入的库非常多,而且很多都已经很成熟了。选择很多,基本上是萝卜青菜各有所爱,用什么都没关系

DevIL

网上不少shader的示例程序都用了这个DevIL库来读取图像。这个库的程序接口和OpenGL风格类似,调用起来很方便,支持的格式也非常多,只是可以保存的图片格式稍微少一些。不过平常自己的程序也需要保存图片为奇奇怪怪的格式。
http://openil.sourceforge.net/

Simple OpenGL Image Library

这个简称soil的图像库使用起来非常简单,只需要一个函数就可以把图像读取到OpenGL中去。我的Shader Demo用的就是这个库,目前还没有发现什么问题。
http://www.lonesock.net/soil.html

模型载入

网上的模型格式可谓各式各样,每个游戏基本上都会有一个自己专用的模型格式。个人感觉有一个能够读取各种格式模型的库还是挺有必要的。

gl3ds

这个项目是glee的一部分。从名字就可以看得出来,这是专门用来读取3ds文件格式的轻量级库。不过它也仅仅能用来读取3ds模型。
http://sourceforge.net/projects/glee/

Open Asset Import Library

如果手头模型格式五花八门,那么可以用这个大家伙来解决你的问题。它能导入十几种模型格式,同时提供C/C++接口。缺点是对于一个简单的Demo程序而言可能有点过于巨大–我的程序在链接了它的静态库以后体积达到了6M…
另外一点就是,这个库独立于OpenGL/DirectX,并不提供针对OpenGL的接口。也就是说你还是得自己写一个循环来绘制模型,不过好在这并不麻烦。
http://assimp.sourceforge.net/

基础框架

大多数人都是比较懒的,懒人都是不会为了一个demo而去从win32 api开始写代码的。

GLUT

没什么可说的,读过红宝书的人肯定对于这个库都非常熟悉。优点是简单,缺点是不方便于面对对象编程,库也非常老了。
http://www.opengl.org/resources/libraries/glut/

FreeGLUT

GLUT的开源实现版本。如果你对于没有glut的源代码而耿耿于怀的话可以用它。不过也不要抱太大希望,这个库和glut几乎一模一样,同时有glut的优点和缺点
http://freeglut.sourceforge.net/

Humus’s Framework

Humus的个人网站上有一卡车一卡车的Shader Demo程序,而他的程序都是用自己的Framework 3写的。这个库很强大的样子,跨平台支持Windows, Linux, 能够用于OpenGL和DirectX,可谓大小通吃。不过缺点是虽然你能下载到它的所有源代码,但是却完全没有文档,连注释都没有。作者最近正在写支持OpenGL 3.0的Framework 4,让咱们祈祷他能写点注释生成个Doxygen文档吧…
http://www.humus.name/

Ogre

这算是这几个里面最重量级的框架了吧。完整的渲染引擎,可以用同样的代码调用DirectX和OpenGL渲染。Ogre的脚本系统很是强大,只需要用脚本就可以搞定Shader渲染中的大部分工作–包括创建Render Target, 载入纹理,实现各个Pass间的交接等等。但是最大的问题是,学习和使用Ogre本身就是一个很大的工作量。如果你已经有使用Ogre的经验的话不妨考虑一下。
http://www.ogre3d.org/

数学库

如果你用了很多第三方库的话,数学库可能会编程很麻烦的一个东西。你会发现你的摄像机、GLSL抽象类、模型载入库分别用了一套不同的库(这正是我现在正在郁闷的一个问题)。没办法,既然不想自己写所有的代码那就只能忍忍了。

GLM

GLM也就是GL Mathematics的缩写。这个库提供的类接口和GLSL中内置的数学接口非常相似,但是缺少一些常用的函数,不是特别方便
http://glm.sourceforge.net/