OSG入门简介

33 篇文章 1 订阅
8 篇文章 3 订阅

  Gitchat开通要先写一篇文章,我还没有想好完整的的教程目录。不过,肯定是三维方面的。后续的,想要开展一些桌面端、网站服务端架构介绍的专题。

  OpenGL与DX11/12的选择?我认为,最好还是学习一下OpenGL。对于想做游戏的开发者,那毫无疑问,应该去学习DX。

    OSG与OGRE选择?我之前的文章没有提过,这里简单提一下。OSG比OGRE要简单多了,OSG仅仅是一个三维渲染引擎,而OGRE是一个接近于游戏引擎的框架。OSG仅仅支持OpenGL,版本更新到4以上了,但是OGRE却同时支持OpenGL与DX,OpenGL目前还停留在2的版本。用户在使用时,估计也只能见到封装好的接口。想要同时学习OpenGL的开发者,还是选择OSG为好。若想要全面的学习游戏中的技术,那还是选择OGRE为好,

   OSG 源代码build。请参看前文。有些开发者可能访问国外网站会有一些困难,如果需要什么资源(如第三方lib),可在本文下留言,我会收集好以供下载。OSG本身只有18个独立的模块,我们选择性使用,可能只会使用到几个。这里build好,还是需要不少时间的,不过做好了,对于学习OSG源代码,还是非常有帮助的。我们可以单步观察OSG内部的运行,这比阅读静态的源代码高效率一些。

  OSG本身提供了非常丰富的功能,每一类功能都单独抽象为一个模块,核心的thread、core、db、viewer、GA,二维渲染相关的text、widget、UI,特效相关的volume、shadow、particle、animation、presentation。模块之间可独立,不需要就不用。可以减少程序体积。

  由于OSG诞生的年代很早,1998年,要知道最早的3D加速卡时94年左右面世的。所以,我们至今仍能够在OSG中看到OpenGL1.0 的历史残留。由于设计到交互,显示引擎需要多线程控制的基础功能,但是当时并没有C++11,也没有pthread,所以,作者采用了一个单独的跨平台线程lib:OpenThreads。在很长的一段时间内,都没有很好的通用的替代者。后来,历史包袱也来越大,也就一直使用到了现在。不过,这个东西和我们无关。

  OSG核心渲染的代码在core模块、viewer模块。core提供了场景树的构建与管理,viewer模块提供了camera、窗口功能,至于GA模块,就是响应鼠标键盘的事件,用于控制场景内浏览的功能。对于三维CAD或者游戏来讲,没有操控,那有什么用。然而,这个模块其实是非必需的,或者说,重要性很小。其目的只是为了控制camera参数。用一个外部的模块也能计算出来。

  无论是CAD软件,还是三维游戏,都是需要重新实现一个二维UI lib的。就等同于MFC、Qt。其一,就是各种控件的绘制;其二,控件的层叠关系、父子关系的控制;其三,字体渲染。这些子话题,单独抽出来都是有不少内容的。心有余力的同学,可以深入挖掘一下这部分内容。不得不说,OSG的二维模块,实现的还是比较简单的,可能是需求并不多。用这种简单的功能来做游戏的overlay层,大抵是极其困难的。

  特效相关的模块就比较外围了。而且,除了OSG自带的模块,我们也可以自己实现各种特效。OSG提供的特效很有限,可能与其应用领域有关。像OGRE多被用于游戏领域,其特效就丰富一些。不过,对于学习这个目的而言,OSG还是非常适合的。

  OSG中的设计模式使用的很好,不过度,不滥用,对于想学习如何组织模块、设计模块的开发者而言,是份不错的学习材料。

  

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值