我目前正在使用DX11开发新的渲染器。
要批处理多个网格,我想使用几何实例与Texture2dArrays来防止纹理图集。
这将是渲染的伪代码:
foreach effect in effects
foreach batch in batches
SetTexture2DArray()
SetInstanceBuffer() //Transform & Material (cbuffer)
SetVertexBuffer()
SetIndexBuffer()
DrawIndexed()
每个网格由3个纹理和几何体组成。具有相同输入布局的网格将在一个批次中合并。
一批可以容纳~300个网格,每批获得900个纹理的TexturArray。
是否可以在TextureArray上使用不同大小的不同组合纹理?
如果不是,我只能将具有相同输入布局和纹理尺寸的网格组合起来。
您认为这是一个好的系统吗?
答案 0 :(得分:1)
关于纹理数组,每个切片需要大小相同。
关于合并模型,较少的绘制调用通常更好,但是如果一个缓冲区持有不同数量的基元的不同子集,则每个都可能导致一些透支,如果它的话,那么在这个用例中更难应用截顶剔除。需要(取决于你可能只发送它的几何数量,现代卡片可以很容易地消耗几何形状)。如果所有几何体始终可见,那么合并是一个明确的好选择。