场景图:递归或迭代?

我和一个同事都在谈论如何的场景在复杂的游戏通常呈现。 他认为,世界正在实现真正面向对象的方式呈现递归 ,与世界上许多演员覆盖每一个虚函数像Actor.Draw()(如Koopa.Draw(),Goomba.Draw())。

相比之下,我想到的是复杂的游戏今天会遍历自己的场景图,避免虚函数的开销,并允许专门的迭代器更灵活(如近到远与远到近,在树中跳过某些物体,等。)我与OpenGL和DirectX的经历向我建议,他们往往拉拢一批对象,并通过了一批环境通过递归调用(即批量成一类的Draw()函数将借鉴)似乎是额外的参数 - 头顶掠过,可以用迭代是可以避免的。

有个方法赞成对另一个越来越大呢? 如果是这样,为什么?

--------------解决方案-------------

场景图的更新部分可能被递归完成。 但绘图它通常经由一些空间分割数据结构和几何完成/渲染状态批量化,以防止透支(通过绘制从前到后),并最小化渲染流水线的状态开关(配料的数据,绘制使用类似的呼叫资源和渲染状态)。 通常这部分绘制在某种程度上,迭代。

你必须考虑到场面多么复杂,它们的组成,以及多少对象正在制定。 对于简单的场景或您事先有一定的信息化项目,测序渲染(近)最佳不值得计算绘图序列或配料的实际成本。

在最后的“天之骄子”的方法是具体项目。

分类:优化 时间:2012-01-01 人气:0
分享到:

相关文章

  • 优化场景图 2013-12-06

    我已经写在OpenGL使用C ++标准的场景图. 我的场景图有节点和形状. 节点是矩阵,他们绘制所有他们的孩子运用他们的矩阵之后. void Node::draw(Affine3f amatrix) const { amatrix = amatrix * matrix; for (Drawable* child : childern) { child->draw(amatrix); } } 形状简单地打包维也纳组织,他们采取矩阵从绘制调用,将其设置为统一的模型视图矩阵,然后绘制VBO. void

  • 在Haskell场景图的遍历 2012-12-29

    我想用实现在Haskell一个简单的场景图Data.Tree组成的Transform和Shape节点. 在一个场景图而横过空间变换被累加并应用到形状进行渲染. type Transform = Vector2 Double data Shape = Circle Double | Square Double data SceneNode = XFormNode Transform | ShapeNode Shape 说,我们有一个场景被移动到右侧,并组成一方形的底部的对象和顶部圆 ^ | | (

  • 游戏引擎:什么是场景图? 2013-10-29

    我开始读入维基百科上的资料,但我还是觉得我真的不明白怎么一副场景图的作品,以及它如何能够为游戏的好处. 什么是游戏引擎的发展脉络场景图? 我为什么要实现一个对我的2D游戏引擎? 确实场景图的使用站作为替代的经典实体系统与线性实体管理? --------------解决方案------------- 什么是场景图?场景图包含了所有特定场景的几何形状. 它们是用于表示相对于彼此的对象(连同其他仿射变换)平移,旋转和比例是有用的. 例如,考虑一个罐(与轨道的类型和一个枪). 场景可以具有多个槽,但每一

  • opengles 2.0的2D场景图的实施 2013-03-31

    我想创建一个2D opengles引擎使用我的应用程序. 这台发动机应该支持场景图. 图中的每个节点可具有根据它的父节点它自己的着色器,纹理,材料和变换矩阵. 但是,我是新来的opengles 2.0,所以我有一些问题: 如何在opengles 2.0矩阵乘法工作? 这是一个好的方法来绘制第一个父,那么它的子节点(乘以模型视图矩阵时,它会给出一些优化). 哪里矩阵乘法发生? 我应该做的CPU或GPU上. 它是一个更好的方法,根据其使用,然后到纹理和材质着色器绘制节点? 如何我应该实现场景图形变换

  • 生成的Java游戏一个简单的场景图 2013-10-24

    我工作在一个相对简单的游戏在Java中使用OPENGL(经处理). 我使用的是典型的MVC模式与游戏更新使用Observer模式传递给Applet的处理. 我想实施一个相对简单的场景图,该方案的模型侧可以更新和观看侧可读取. 到目前为止好,但场景图是新的给我,我在未来与产生在首位场景图的一个体面的方式麻烦. 该模型侧具有此刻两个集合为游戏实体,一个用于在游戏单元和第二环境的对象. 我可以简单地通过这些迭代并生成节点添加到场景图. 什么我不知道的是,当这些实体之一被改变或破坏该怎么办. 难道我再次

  • 实现基于C MVC模式++场景图 2014-03-04

    予具有表示一个3D模型(一个场景图)的对象树. 树节点是不同的类型(实施为派生类从一个共同的基类)的. 例如,有表示一多边形的节点,或该坐标变换(旋转,平移)适用于它的子节点的节点. 这也是一个要求,即第三方供应商应该能够实现新的节点类型,并通过一个插件(我使用Qt的GUI框架)进行添加. 因此它是可能的,这有可能是在树,其中编译时的类型是未知的节点. 现在我想实现一个类,它充当这个场景图的视图. 对于每一个树节点类型视图有采取适当的行动(绘制多边形,变换等). 我的想法是为执行视图类为每一个节

  • 3D场景图遍历问题 2014-11-26

    我已经实现由OpenGL的呈现一个小场景图,所有的对象从一个共同的派生Node类和OpenGL帧渲染的时候,我只需要调用visit根节点的方法和递归遍历图. 开始遍历当我通过第一个矩阵是相机矩阵. 该visit方法如下: void Node::visit(const QMatrix4x4 &mv) { QMatrix4x4 m = mv; m.rotate(m_rot); m.translate(m_pos); m.scale(m_scale); m_effectiveMV = m; for (

  • Java3D的场景图的可视化工具 2012-01-26

    是否有一个可视化的Java3D给定应用程序的场景图的工具吗? 就像有自动生成UML图的工具. 编辑:如果不是,是否有这样的绘制图表任何好的免费工具? OS X --------------解决方案------------- J3DWorkbench非常好. http://eclectic3d.net/ 这个Java 3D论坛线程可能会有所帮助: http://www.java.net/forum/topic/javadesktop/java-desktop-technologies/java-3

  • jQuery的递归迭代对象 2012-05-17

    有一天,我想我看到了jQuery的对象迭代器,有可能被设置为递归迭代子对象的一个​​标志. 我认为这是jQuery.each()的一部分,但现在我没有看到文档的能力. 是否有这样的迭代器,jQuery的,可以自动递归? (我知道如何做到这一点在JavaScript.只是想知道如果我真的看到了什么,我想我看到了.) 谢谢了! 编辑:要清楚,我在想一个实用的方法类似jQuery.each()将递归迭代通过JavaScript对象和它们的嵌套的对象. 下面给出的例子中,各()方法将遍历所有对象,包括嵌

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.567 (s). 10 q(s)