代码之家  ›  专栏  ›  技术社区  ›  Matt

渲染器效率

  •  2
  • Matt  · 技术社区  · 15 年前

    好的,我有一个renderer类,它有程序其余部分调用的各种特殊函数:

    • Drawbox填充
    • 函数说明
    • 抽绳
    • 大约30多个。。。

    这些函数中的每一个都分别调用glBegin/glEnd,我知道这可能效率很低(甚至被弃用)。因此,无论如何,我正在计划对渲染器进行全面重写,我需要知道设置函数的最有效方法,这样当有人调用它时,它会一次绘制出所有内容,或者它需要执行的任何其他操作都会运行 高效。提前感谢:)

    2 回复  |  直到 15 年前
        1
  •  6
  •   Stack Overflow is garbage    15 年前

    渲染的有效方法通常是使用VBO(顶点缓冲区对象)来存储顶点数据,但这只有在渲染(大部分)静态数据时才真正有意义。

    如果不知道应用程序应该呈现什么,很难说应该如何构造它。但理想情况下,您不应该绘制单个图元,而应该绘制顶点缓冲区的内容(子集)。

        2
  •  4
  •   Dean Harding    15 年前

    scene graph

    另一种稍有不同的方法是在每一帧重新构建整个场景图。这样做的优点是,一旦场景图被合成,它就不会改变。因此,您可以在另一个线程上调用“render”方法,而“update”方法正在执行并为 下一个

    如果没有完整的场景图,许多更高级的效果根本不可能实现。例如,不能进行阴影映射(需要从不同角度多次渲染场景),不能进行延迟渲染,这也使得依赖排序绘制顺序(例如alpha混合)的任何操作都非常困难。

    从方法名称来看,它看起来像是在2D中工作,因此,虽然阴影映射在功能列表中可能不高,但alpha混合延迟渲染可能更高。