我要发帖 回复

高级会员

109

主题

1366

积分

0

专家分

OSG-VR-GIS

忠于职守杰出贡献

:

私信
发表时间 : 2007-10-24 00:46:00 | 浏览 : 2963    评论 : 3
--------------------------------------------------------------------------------

        3D Game Development Tutorials
        Using SDL and OSG
        
        第三课

        Basic OSG Setup

                        ------FlySky
--------------------------------------------------------------------------------


引言

        在本课程中,我们将讲解如果将OSG嵌入我们上节课用的代码中,同时我们还会用到OSG中的的一些基本概念和操作,以及一些重要的功能.

在代码清单中用到的概念

        Scene Graphs
        OSG/SDL Integration
        OSG::SceneView
        OSG::Camer
        OSG::VecXY
        Screen Updates


        首先声明一下,本教程是针对有一定基础的OSG的读者的,对于OSG的一些简单的类和概念方面的东西,我就不再给大家解释了。因为那样的解释和说明,只会大幅度的增加教程的篇幅,也会让你感到该教程是如此的繁琐无味。如果你是OSG初学者,这样至少可以给你一个学习挑战的机会~呵呵~我会把一些与OSG有区别的东西详细的讲解一下~~


OSG/SDL Integration---OSG与SDL的结合

        对于即将建立的游戏引擎,我们将会把OSG和SDL结合起来在屏幕上绘制对象。OSG将调用OPENGL的函数来创建场景;然后,将数据传递给SDL;SDL获得下一帧的缓冲数据后,将它显示在屏幕上。为了使OSG和SDL能够一起工作,我们将调用下面的函数:

        SDL_SetVideoMode(640, 480, 0, SDL_OPENGL)


Screen Updates---屏幕刷新

        屏幕刷新无论对于OSG还是SDL来说,都使十分容易的。在我们的Event Loops中,系统依照它的正常的进程工作,不可避免的会改变屏幕数据。因此,这时屏幕刷新就显得十分必要了~我们将调用四个简单的函数来完成屏幕的刷新:
        前三个引用了osg::SceneView中的函数:
        update();
        cull();
        draw();

        最后一个是引用SDL中的函数:

        SDL_GL_SwapBuffers();

        前面的三个函数作用:更新遍历程序修改的场景图形,拣选遍历场景图形中的所有节点,将由拣选遍历生成的几何体列表copy到OpenGL图形缓冲区~最后一个函数呢?就是与缓冲区的数据进行交换,并在屏幕上绘制刷新后的场景图形。

参考文档:

        SDL_GL_SwapBuffers:
        http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fGL_5fSwapBuffers        
        OSG::SceneView:        
  http://www.openscenegraph.org/documentation/osg/' target = '_blank' style = 'color: #666; padding-right: 16px; background: url(static/image/admincp/newwin.gif) no-repeat right;'>OpenSceneGraphReferenceDocs/a01471.html
        OSG::Camera:
        http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a01059.html        
        OSG::Vec2f:
        http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a01798.html        
        OSG::Vec3f:
        http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a01802.html
        OSG::Vec4f:
        http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a01806.html
        Scene Graphs:         
        http://en.wikipedia.org/wiki/Scene_graph

总结:

        如果一切非常顺利,示例程序编译并成功运行的话,与我们上节一个黑色的SDL窗口相比,取而代之的将是一个蓝色的窗口(如下图)。这是一个进步??是的,呵呵,虽然不是很大的进步。这告诉我们,我们可以通过SDL和SDL来创建并初始化一个默认的场景图形,渲染场景数据,并且在屏幕上绘制对象。这个是非常好的,呵呵~~~~~~

        在接下来的课程中,将会添加更多的OSG代码进去这个框架中~~~

osg_image.png

osg_image.png

最近VR访客


OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
FlySky 评论于2007-10-24 00:47:55
代码下载:

osg_setup.rar

5.23 KB, 下载次数: 67

osg_setup.rar


OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
array 评论于2007-10-24 08:34:56
支持~~呵呵,不过有些话看不太明白呢

原帖由 FlySky 于 2007-10-24 12:46 AM 发表
对于游戏,我们将会建,秘书长办公室将与思迪提请物体向屏幕。秘书长办公室施工现场,用opengl的功能调用,然后再发送数据思迪;思迪在取得缓冲区为下一帧,油漆,丢在屏幕上。
FlySky 评论于2007-10-24 11:57:30
原帖由 array 于 2007-10-24 08:34 AM 发表
支持~~呵呵,不过有些话看不太明白呢



不好意思~~~~~一朋友跟我开了个玩笑,,请见谅~~~~~~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-9-18 07:19 AM

返回顶部