OGRE的学习资源
本文介绍从哪儿开始学习OGRE(Object-Oriented Graphics Rendering Engine的简称,又叫做OGRE 3D),如何在网上找寻OGRE的学习资源。
首先是wikipedia的介绍:
http://en.wikipedia.org/wiki/OGRE
官方网站:
官网介绍:http://www.ogre3d.org/about
特性列表:http://www.ogre3d.org/about/features
开发者对OGRE评价:http://www.ogre3d.org/about/testimonials
在这里下载OGRE:
http://www.ogre3d.org/download/sdk
目前最新稳定版为1.9,上一个稳定版为1.8.1,可以两个都下下来,下载下来的.exe文件其实是个压缩包,直接解压。OGRE SDK文件夹下有个文件OgreSDK_vc10_v1-9-0/Docs/CodingStandards.html,建议首先读一下,这里讲了OGRE的给类命名的约定等,我简单列一些:
- 每个类的声明和实现都放在单独的源文件中,className.h里声明,className.cpp里实现,除少数类外;
 - OGRE的所有东西都放在“Ogre”命名空间;
 - 尽量使用STL的容器和算法(所以OGRE很依赖STL);
 
好了,看完介绍,可以动手了,官网有Tutorials:
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Tutorials
Basic Tutorials简单讲了OGRE的各个方面:camera, light, shadow, sky, fog, input(key and mouse)等等,大概都是一步步教你做,然后简单讲解原理,建议全看,边看边跟着做;Intermediate Tutorials和In Depth Tutorials有一定深度,建议对OGRE有初步经验之后再看。
OGRE wiki有更多的资源:
http://www.ogre3d.org/tikiwiki/tiki-index.php
一旦开始写代码,API参考是必不可少的(OGRE SDK 包里有离线的,也可以从源码用Doxygen自己生成API文档):
http://www.ogre3d.org/docs/api/1.9/
当你遇到什么特殊问题,可以去OGRE论坛看看,很可能别人问过这个问题了,也可以发帖问,不要担心自己的英语不好,老外会很热情的给你解答的:
在下载的OGRE SDK包里面,有一个.sln文件,可以用Visual Studio打开,那是OGRE的example,里面的代码对入门者是很好的参考,编译SampleBrowser项目后运行结果截图如下:

另外有两本英文书籍,可以在新浪爱问共享资料上下载(我发现好多书都能从那里找到):
Ogre 3D 1.7 Beginner's Guide (Felix Kerger, 2010)
OGRE 3D 1.7 Application Development Cookbook (Ilya Grinblat, Alex Peterson, 2012)
第一本书我读了大部分了,内容形式是那种举例子教你做的,例子都较为简答(跟Basic Tutorials一个级别),适合入门,但OGRE背后的原理涉及很少;第二本是也是以应用为主的。怎么说呢,这两本书可以用来入门吧。
Pro OGRE 3D Programming是另一本OGRE的书,但太旧了,不建议看。
《OGRE 3D游戏开发框架指南》(邸锐,2010)是我能找到的为数不多的中文书籍,我没看,因为我看目录也是以例子为主的。
当你对OGRE有了更多经验之后(能构建需要的场景,添加鼠标键盘响应,帧事件),你可能想了解OGRE背后的东西,比如材质脚本怎么写,着色器脚本怎么写等等,可以看看OGRE manual:
http://www.ogre3d.org/docs/manual/manual_toc.html#SEC_Contents
OGRE SDK 1.8.1包里也有。
在更深入探索OGRE之前你可能需要了解一下设计模式(得益于此,OGRE才有这么优美的设计)、STL标准库、C++模板等。哦,还有图形学相关理论,我推荐浙江大学的一个图形学课程的网站,看看上面给出的上课PPT之后你会对图形学有大致了解:
http://staff.ustc.edu.cn/~zhuang/acg/index.htm
剩下的估计是看源代码了吧。
OGRE的学习资源的更多相关文章
- springboot 学习资源推荐
		
springboot 是什么?对于构建生产就绪的Spring应用程序有一个看法. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.(这是springboot的官方介绍) 我们为什么要学 ...
 - Redis初识、设计思想与一些学习资源推荐
		
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
 - 一份关于Swift语言学习资源的整理文件
		
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
 - angularJS学习资源最全汇总
		
基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zip下载包 https://github ...
 - Scala学习资源
		
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...
 - .net 网站开发学习资源
		
慕课网 前端基础学习 http://www.imooc.com/course/list?c=fe 了解需求 例子之一 http://wenku.it168.com/d_000517899.shtml ...
 - OpenGL的学习资源
		
OpenGL是3D图形接口工业标准,使用上非常简单,所有API不过上百个函数,但理解OpenGL就没那么简单,本文总结OpenGL的学习资源,包括官方资料.网上教程.示例程序等. Wikipedia: ...
 - Bullet的学习资源(用Doxygen生成API文档)
		
Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...
 - VTK的学习资源
		
本文介绍从哪儿开始学习VTK(Visualization Toolkit的简称),如何在网上找寻VTK的学习资源. 首先,可以到维基百科或者百度百科上查看VTK条目,了解VTK是什么. http:// ...
 
随机推荐
- tomcat重启脚本
			
#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binexport JAVA_HOME=/opt/jd ...
 - 荣品RP4412开发板烧写Ubuntu系统应注意SD卡内存大些
			
问:RP4412开发板用SD卡烧写光盘中的fastboot失败,现在如何补救呢? 答:INAND格式化, 利用usb来升级啊, 也有文档,看升级文档. 问: 这个是怎么回事? 答:你是升级什么系统? ...
 - sql之多表连接
			
最近遇到特别多多表连接的问题,因此随笔记下,开始学java和mysql的时间太短,有见解不周的地方,希望读者可以提出探讨. 对于left join.right join和inner join(join ...
 - JavaScript 字符串常用操作
			
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
 - Codeforces Round #383 (Div. 2) 解题报告
			
本来是打算所有半夜进行的CF都不参加的,但看到这次比赛22:35就开始,还是没有忍住orz--晚上总是不够清醒,做题思维不如白天活跃,低级错误常常出现.出的比较早的C因为一个书写错误有点小bug,在比 ...
 - Apache安装与属性配置
			
Apache 事先创建进程 按需维持适当的进程 模块块设计,核心比较小,各种功能都模块添加(包括php) 支持运行配置,支持单独编译模块 支持多种方式的虚拟主机配置 Socket IP ...
 - Oracle Merge into 详细介绍
			
Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...
 - 人工智能交互集成在线语音合成能力的Tips
			
在线语音合成就是在联网的场景下将文字转换成声音,实现机器向人的声音交互.这个概念应该是比较好理解的,下面就结合官网的Android在线合成的Demo讲解一下合成的流程以及大家经常遇到的一些问题. 到官 ...
 - int->string-------------c
			
void intToString(int n,char a[]){ int i=1,m=n; while((n/=10)!=0) i++; int j=0; for(;j<i;j++){ a ...
 - C++多线程2
			
#include "stdafx.h" #include <windows.h> int g_count; ; DWORD __stdcall Func(LPVOID ...