array 发表于 2008-8-14 10:31:45

OSG最新教程连载:最长的一帧 (共30话,已放出PDF版本)

2008年8月14日开始放出“第一日”,以后每天放出一话。欢迎到教程专区阅读并批评指正。
毕竟写这个话题的难度太高,我总得先反复做一些检查;一天一话是给有兴趣的朋友一个缓冲,还有就是这样连载觉得比较好玩~~^_^

===========================

《最长的一帧》
作者:王锐(array @ osgchina.org)
随意转载,请注明原作者,请勿收费

这是一篇有关OpenSceneGraph源代码的拙劣教程,没有任何能赏心悦目的小例子,也不会贡献出什么企业级的绝密的商业代码,标题也只是个噱头(坏了,没人看了^_^)。
本文写作的目的说来很简单,无非就是想要深入地了解一下,OSG在一帧时间,也就是仿真循环的一个画面当中都做了什么。

对OSG有所了解之后,我们也许可以很快地回答这个问题,正如下面的代码所示:while (!viewer.done())
viewer.frame();就这样,用一个循环结构来反复地执行frame()函数,直到done()函数的返回值为true为止。每一次执行frame()函数就相当于完成了OSG场景渲染的一帧,配置较好的计算机可以达到每秒钟一二百帧的速率,而通常仿真程序顺利运行的最低帧速在15~25帧/秒即可。

很好,看来笔者的机器运行frame()函数通常只需要8~10ms左右,比一眨眼的工夫都要短。那么本文就到此结束吗?

答案当然是否定的,恰恰相反,这篇繁琐且可能错误百出的文字,其目的正是要深入frame()函数,再深入函数中调用的函数……一直挖掘下去,直到我们期待的瑰宝出现;当然也可能是一无所获,只是乐在其中。

这样的探索要到什么时候结束呢?从这短短的10毫秒中引申出来的,无比冗长的一帧,又是多么丰富抑或无聊的内容呢?现在笔者也不知道,也许直到最后也不会明了,不过相信深入源代码的过程就是一种享受,希望读者您也可以同我一起享受这份辛苦与快乐。

源代码版本:OpenSceneGraph 2.6.0;操作系统环境假设为Win32平台。为了保证教程的篇幅不致被过多程序代码所占据,文中会适当地改写和缩编所列出的代码,仅保证其执行效果不变,因此可能与实际源文件的内容有所区别。

由于作者水平和精力所限,本文暂时仅对单视景器(即使用osgViewer:: Viewer类)的情形作出介绍。

本文在写作过程中将会用到一些专有名词,它们可能与读者阅读的其它文章中所述有所差异,现列举如下:
场景图形-SceneGraph;场景子树-Subgraph;节点-Node;摄像机-Camera;渲染器-Renderer;窗口-Window;视口-Viewport;场景-Scene;视图-View;视景器-Viewer;漫游器-Manipulator;访问器-Visitor;回调-Callback;事件-Event;更新-Update;筛选-Cull;绘制-Draw。

[ 本帖最后由 array 于 2008-8-16 13:11 编辑 ]

FlySky 发表于 2008-8-14 11:29:11

期待~~~~~~~~~~~~:lol :lol :lol

GinTing 发表于 2008-8-16 09:40:14

斑竹好强!!支持以下...................:lol :lol :lol

zhangyi 发表于 2008-8-17 08:40:55

强烈支持!

blindpoint 发表于 2008-8-17 20:09:11

板凳了

Cesium论坛管理员 发表于 2008-8-19 11:48:36

这个不支持,就真对不起ARRAY兄啦!

hahahaha 发表于 2008-8-20 23:00:40

这个要支持

OSG论坛管理员 发表于 2008-8-23 19:54:51

最长的一帧 (已放出9话)
写小说的,一看就是写小说的,名不虚传呀,哈哈

soda 发表于 2008-8-30 23:17:30

顶array兄章回体小说,哈哈

teli 发表于 2008-9-2 15:41:59

顶,谢谢老大

zzh5682 发表于 2008-9-4 10:32:16

相当支持!!!

rianter 发表于 2008-9-5 11:14:30

相当好

hqfei10 发表于 2008-12-25 20:56:22

Array真牛。
差距啊。我要努力。

dwguo 发表于 2009-2-16 14:31:45

斑竹厉害,我想更深入的了解osg的机制有没有那方面的资料

array 发表于 2009-2-16 18:58:22

目前看来,国内外应该都只有本人的这篇《最长的一帧》是针对OSG内部实现进行介绍的 :lol
今年计划写一部为OSG初学者查漏补缺的《OSG跬步》教程,其中会详解OSG现有的重要机制,包括多线程,内存管理,节点树,访问器,回调,插件管理,仿函器等。敬请在五月份之后期待~~~~在这之前笔者可能会忙得抽不出空来。

minghongxie 发表于 2009-3-23 20:19:52

PDF版本从哪儿可以获取到啊?

array 发表于 2009-3-23 22:14:52

原帖由 minghongxie 于 2009-3-23 20:19 发表 http://bbs.osgchina.org/images/common/back.gif
PDF版本从哪儿可以获取到啊?

教程区精华:
http://bbs.osgchina.org/viewthread.php?tid=696

minghongxie 发表于 2009-3-24 07:56:46

原帖由 array 于 2009-3-23 22:14 发表 http://bbs.osgchina.org/images/common/back.gif


教程区精华:
http://bbs.osgchina.org/viewthread.php?tid=696

thanks. 对你的无私奉献表示崇高敬意!:P

susn04 发表于 2009-4-9 14:58:05

楼主真是厚道人啊
必须向楼主致敬!

shengrendan2 发表于 2009-9-15 16:52:47

“不过相信深入源代码的过程就是一种享受,希望读者您也可以同我一起享受这份辛苦与快乐。”
这是墨子的精神~
对这种痛并快乐着的变态行为致敬!继续努力多出好东西!
雄起‘
页: [1]
查看完整版本: OSG最新教程连载:最长的一帧 (共30话,已放出PDF版本)