【问题标题】:Batching with Texture2DArray使用 Texture2DArray 进行批处理
【发布时间】:2014-09-04 10:45:47
【问题描述】:

我目前正在使用 DX11 开发新的渲染器。
为了批量处理多个网格,我想使用带有 Texture2dArrays 的几何实例化来防止纹理图集。
这将是渲染的伪代码:

foreach effect in effects
    foreach batch in batches
        SetTexture2DArray()
        SetInstanceBuffer() //Transform & Material (cbuffer)
        SetVertexBuffer() 
        SetIndexBuffer()
        DrawIndexed()

每个网格由 3 个纹理和几何体组成。具有相同输入布局的网格将被合并为一批。
一个批次最多可以容纳约 300 个网格,以获得每批次 900 个纹理的 TexturArray。
是否可以在 TextureArray 上使用不同大小的不同纹理组合?
如果不是,我只能将具有相同输入布局和纹理大小的网格组合起来。

您认为这通常是一个好的系统吗?

【问题讨论】:

    标签: c++ 3d rendering directx-11


    【解决方案1】:

    关于纹理数组,每个切片需要相同大小。

    关于合并模型,较少的绘制调用通常会更好,但是使用一个缓冲区保存具有不同数量的图元的不同子集可能会导致一些过度绘制,并且如果需要,平截头体剔除将更难应用于该用例(取决于无论如何你可能只是发送它的几何数量,现代卡片可以很容易地吃掉几何)。如果您的所有几何图形始终可见,那么合并绝对是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2015-11-21
      • 2017-01-12
      相关资源
      最近更新 更多