首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渲染效率

渲染效率
EN

Stack Overflow用户
提问于 2010-11-15 01:06:55
回答 2查看 236关注 0票数 2

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

  • DrawBoxFilled
  • DrawText
  • DrawLine
  • 再来30个..。

这些函数中的每一个都可以分别调用glBegin/glEnd,我知道它可能非常低效率(甚至被废弃)。因此,无论如何,我计划对呈现器进行一次全面重写,我需要知道最有效的方法来设置函数,以便当调用它时,它会同时绘制它,或者它需要做的任何事情,这样它就可以高效地运行。(预先谢谢:)

EN

回答 2

Stack Overflow用户

发布于 2010-11-15 01:17:17

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

在不了解应用程序应该呈现什么的情况下,很难确定您应该如何构造它。但理想情况下,您不应该绘制单个原语,而是绘制顶点缓冲区的内容(子集)。

票数 6
EN

Stack Overflow用户

发布于 2010-11-15 01:15:59

最有效的方法就是根本不公开这种低层次的方法。相反,您要做的是构建一个场景图,它是一个包含整个场景的表示的数据结构。在“更新”方法中更新场景图,然后在“呈现”方法中一次渲染整个场景。

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

许多更先进的效果是根本不可能没有一个完整的场景图。您不能进行阴影映射,例如(这要求您从不同的角度多次渲染场景),您不能进行延迟渲染,它还会使任何依赖排序绘制顺序(例如α混合)的绘制变得非常困难。

从您的方法名称来看,它看起来像是在2D中工作,因此,虽然阴影映射在您的功能列表中可能并不高,但α混合延迟呈现可能是。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4180678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档