【问题标题】:Rendering thousands of textred cubes渲染数千个带文本的立方体
【发布时间】:2015-06-30 12:56:09
【问题描述】:

我刚刚对我的立方体进行纹理处理 - 我在网上搜索并意识到为我的立方体提供 6 个不同纹理(使用 glDrawElements)的唯一方法是创建大约 24 个索引。它仍然比 glDrawArrays 快,但它看起来非常不合逻辑且非常慢。我知道 glDrawElements 的目的是处理复杂模型,其中很少有索引共享不同的纹理坐标。 但是,我仍然很困惑,因为 glDrawElements 给了我性能提升(没有任何效果,只是着色器着色),从 10,000 个立方体 (glDrawArrays) 的大约 50-67 毫秒到 100,000 个立方体的 25-33 毫秒。

我的问题是:我只能接受它,还是有办法克服这个问题?

【问题讨论】:

  • 你可以尝试使用像that这样的立方体贴图纹理来代替逐个表面的纹理。
  • 为什么你认为glDrawElements 会更慢?几乎从来没有,即使根本没有共享顶点。

标签: opengl render indices cubes


【解决方案1】:

我不知道您要归档什么,但您可以尝试减少场景中的 ob 顶点数。这将使速度更快。我认为如果您的立方体需要多个纹理,您可以将它们存储在纹理图集中,并为立方体的每个顶点分配纹理图集中图像的相应纹理坐标。这将减少纹理调用的数量,因为只有一个纹理。此外,您只需要渲染用户可见的顶点/三角形,因此您不需要对立方体的背面进行纹理处理。

我找到了一个很好的网站,它解释了如何加速渲染数千个立方体。他们试图通过在将它们加载到 GPU 之前剔除大量顶点来在 CPU 上生成一个大对象,但我认为对于您的问题,您只能尝试使用尽可能少的纹理(TextureAtlas),这将提高性能,但是对于整个立方体,您需要 8 个顶点,每个顶点都有一个特定的纹理坐标。

【讨论】:

    猜你喜欢
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2010-10-02
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    相关资源
    最近更新 更多