d3d中的自动纹理管理
纹理管理是在给定的时间确定哪些纹理需要渲染并保证那些纹理被加载到显存的过程。纹理管理算法可能非常复杂,但是它基本上都会包含下面三个主要步骤:
1. 跟踪可以获取到的显存的总量;
2.计算哪些纹理是渲染所必须的,哪些不是;
3.确定哪些显存中的纹理资源需要被另外的纹理图片替换;
d3d实现了系统支持的纹理管理,保证了纹理加载的性能很快。d3d管理的纹理资源被叫做托管纹理。纹理管理通过给每个纹理加上时间戳即标记该纹理上次使用的时间,来管理纹理。它使用的是最近最少使用的算法来确定哪个纹理应该被删除。如果两个纹理的时间戳相同,则比较两个纹理的优先级。
在创建纹理的时候使用D3DPOOL_MANAGEED标记,就可以创建托管纹理。不允许在创建托管纹理的时候进行指定纹理存储的位置,比如使用D3DPOOL_DEAFAULT和D3DPOOL_SYSTEMMEM标记。在创建完成后,可以调用SetTexture接口来制定纹理。
可以通过IDirect3DResource9::SetPriority接口来为纹理表面来设置优先级。