以编程方式创建Directx 11纹理,三种不同方法的优缺点
|
msdn文档说明,在DirectX 11中,可以通过多种方式以编程方式填充DirectX 11纹理:
(1)使用默认用法纹理创建纹理,并使用内存中的数据对其进行初始化
(2)创建具有动态用法的纹理,使用DeviceContext Map获取指向纹理内存的指针,对其进行写入,然后使用Unmap指示已完成(这时我猜它已复制到gpu)
(3)创建具有临时用途的纹理,并遵循与动态纹理相同的步骤,但在此之后,调用ID3D11DeviceContext.CopyResource以使用此临时纹理依次填充(非不变的)默认或动态纹理。
但是,文档根本没有解释每种方法的优缺点,而且我对DirectX还是很陌生,所以对我来说一点也不清楚。
在DirectX 11中以编程方式创建纹理的每种方式的优缺点是什么?
旁注:我已经读到,在暂存纹理的上下文中,不缓冲从gpu读回的数据,因此您必须自己进行双缓冲。但是我不知道这是否正确,以及它是否适用于使用暂存纹理进行书写(甚至实际上是什么意思)。
第二点注意:Map方法文档说,它获取指向子资源中数据的指针,并拒绝GPU访问该子资源。当GPU要访问其基础数据已被Map调用的纹理时,该怎么做?失速了吗(我问,因为这听起来像是我所询问的利弊的一部分)
没有找到相关结果
已邀请:
1 个回复
秃拳割