DX9 纹理间拷贝的几种方式

计算机3D图像相关技术的讨论

DX9 纹理间拷贝的几种方式

帖子awakening3d » 2017年 9月 4日 22:37

Texture 的数据相互拷贝,或者填充,是经常会用到的。本来用 Lock 取得 buffer 地址是最直接的,但 DX9 里的 Lock 能成功是需要具备很多条件的,幸好还有好几种别的方式:

1. d3ddevice9-> StretchRect
限制很多,但效率高

2. d3ddevice9-> UpdateSurface
d3ddevice9-> UpdateTexture
只能从 D3DPOOL_SYSTEMMEM 到 D3DPOOL_DEFAULT 拷贝数据

3. D3DXLoadSurfaceFromSurface
D3DXLoadSurfaceFromMemory
适用范围最广,基本上什么格式和 D3DPOOL 都能用,不过效率不如上面的原生接口。

4. d3ddevice9-> ColorFill
可以用指定颜色填充表面,只能用于 D3DPOOL_DEFAULT

5. D3DXFillTexture
可以使用函数定制填充纹理数据,效率不高
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

回到 学习交流

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客

cron