自动纹理管理
来源:互联网 发布:linux shell 写入文件 编辑:程序博客网 时间:2024/05/29 03:03
d3d中的自动纹理管理
纹理管理是在给定的时间确定哪些纹理需要渲染并保证那些纹理被加载到显存的过程。纹理管理算法可能非常复杂,但是它基本上都会包含下面三个主要步骤:
1. 跟踪可以获取到的显存的总量;
2.计算哪些纹理是渲染所必须的,哪些不是;
3.确定哪些显存中的纹理资源需要被另外的纹理图片替换;
d3d实现了系统支持的纹理管理,保证了纹理加载的性能很快。d3d管理的纹理资源被叫做托管纹理。纹理管理通过给每个纹理加上时间戳即标记该纹理上次使用的时间,来管理纹理。它使用的是最近最少使用的算法来确定哪个纹理应该被删除。如果两个纹理的时间戳相同,则比较两个纹理的优先级。
在创建纹理的时候使用D3DPOOL_MANAGEED标记,就可以创建托管纹理。不允许在创建托管纹理的时候进行指定纹理存储的位置,比如使用D3DPOOL_DEAFAULT和D3DPOOL_SYSTEMMEM标记。在创建完成后,可以调用SetTexture接口来制定纹理。
可以通过IDirect3DResource9::SetPriority接口来为纹理表面来设置优先级。
d3d将自动地把托管纹理上传到显存中来显示。对应用程序来说,托管纹理存储在什么位置是透明的,也就是不需要知道的信息。如果你的 应用程序需要的纹理内存大于显存则,d3d将会自动把老纹理删除。如果使用一个已经被删除的纹理,则系统将会再次把原始的系统内存中的纹理加载到显存中。虽然重新加载纹理是必须的,但是它会降低应用程序的性能。
可以动态的修改系统内存中的纹理,通过调用updating 或 locking 资源。当系统在一个update完成之后或当表面被解锁时检测到一个dirtysurface,纹理管理会自动的更新显存内容。当然这一个过程也会降低性能。
当进入一个新的游戏画面时,可能需要更新所有的托管纹理,可以通过调用IDirect3DDevice9::EvictManagedResources接口来实现。
- 自动纹理管理
- OpenGL纹理自动生成
- opengl之自动纹理
- OpenGL ES纹理管理
- Irrlicht的纹理管理
- Cocos2d-x 纹理管理
- 纹理矩阵和自动生成纹理
- opengl 自动产生纹理坐标
- OpenGL自动生成纹理步骤
- OpenGL--自动生成纹理坐标
- 对象缩放纹理自动重复
- 游戏中纹理压缩格式之自动压缩纹理
- OpenGL之自动纹理坐标生成
- OpenGL自动计算顶点纹理坐标
- (转)OpenGL之自动纹理坐标生成
- cocos2d-x添加纹理自动回收机制
- OpenGL之自动纹理坐标生成
- [OpenGL]纹理坐标的自动生成glTexGen
- POJ 1016
- 读“前50页中的错误分析”有感
- POJ 1169
- POJ 1828
- Java文本语音转换组件JTTS发布(eSpeak封装)
- 自动纹理管理
- 电脑常见问题及解决方案
- DSkinLite
- libevent源码深度剖析十三——libevent信号处理注意点
- 谭浩强 《C程序设计》 第三版 第三章习题答案 (修正)
- ThinkPHP:简单的权限认证类gMAR[新增完整例子-订单管理后台]
- 继续优化,使用AC算法,时间控制在1秒内
- POJ 1298
- ibm aix rpc.cmsd remote exploit