UE里TextureStreaming的PoolSize是直接在显存里开辟一块空间吗?项目这边调试的时候发现修改PoolSize的话显存占用好像没有变化。
Hi,
你好,TextureStreaming的PoolSize只是一个逻辑限制,不是直接占用这么大的空间,而是会根据已经Streaming进来的Texture,评估是否超出了这个PoolSize,如果超出了,会根据优先级Streaming out出去一些mips,保证占用尽量控制在Poolsize内。
这样做的话是不是不太好避免内存碎片的产生?
TextureStreaming PoolSize是一个可以runtime调整的参数,且不同类型的texture不适合分配在同一片内存区域上。
D3D12底层有FD3D12TextureAllocatorPool,会申请不同类型的Heap,用于不同类型的贴图申请。驱动底层可能也会做一些类似的逻辑。