【发布时间】:2011-10-25 19:28:58
【问题描述】:
在我的 opengl 应用程序中,我在屏幕上的不同点绘制了大约 50k 次相同的多边形。在我目前的方法中,我执行以下操作:
- 将多边形一次绘制到显示列表中
- 对于多边形的每个实例,推动矩阵,平移到该点,适当缩放和旋转(每个点的缩放将相同,平移和旋转不会)。
但是,对于 50k 多边形,这是 50k 推送和弹出以及正确矩阵平移的计算以移动到正确的点。
我的一位同事还建议将整个场景绘制到缓冲区中,然后仅通过一次平移绘制整个缓冲区。这里的权衡是我们需要将所有多边形顶点保存在内存中,而不仅仅是显示列表,但我们不需要为每个顶点执行 push/translate/scale/rotate/pop。
第一种方法是我们目前已经实施的方法,我希望看看我们是否可以改进它,因为第二种方法需要进行重大更改(但是,如果第二种方法更快,我们可以总是重写)。
所有这些推送/弹出都是必要的吗?有没有更快的方法来做到这一点?我应该担心这么多推送/弹出会降低性能吗?
【问题讨论】:
标签: performance opengl