Irrlicht的纹理管理

Irrlicht中的纹理管理还是比较简单的,功能也比较少,主要是面向应用的,现在来看一下irrlicht是如何管理纹理的。

纹理一般的都是从磁盘或者其他的文件中加载图片后创建的,我们平时创建纹理一般都是通过D3D的API来完成的:

HRESULT D3DXCreateTextureFromFile(
  LPDIRECT3DDEVICE9 pDevice,
  LPCTSTR pSrcFile,
  LPDIRECT3DTEXTURE9 * ppTexture
);
HRESULT D3DXCreateTextureFromFileEx(...);
这样很方便,一步到位就能加载图片和创建纹理LPDIRECET3DTEXTURE9.

但是我们看到在IRRLICHT中不是这么做的,它将纹理和图片等资源文件是分开的,不是简单的利用D3D API来创建。

IRRLICHT中DX纹理类是     class CD3D9Texture : public ITexture ,这个类只要维护了LPDIRECET3DTEXTURE9这个指针,这样

一个CD3D9Texture 就代表着一个纹理资源,它以纹理对应的图片文件名来标记唯一性的。

再说一下图片,所有的IRRLICHT所支持的图片资源比如JPG,BMP,....都是在CImage类中维护的,CImage中有当前图片的数据,当然了

每个不同类型的图片都有各自的Loader,比如JPG图片的加载由class CImageLoaderJPG : public IImageLoader来完成的,图片的写入操作

就是Writer来完成 class CImageWriterJPG : public IImageWriter完成, 其中读取和写入都是通过CImage类完成。  

       有了图片的数据CImage,我们就能很轻松的初始化CD3D9Texture了,通过锁的操作来复制数据。

       最后来看一下,纹理资源的管理,之前说了IRRLICHT中纹理的管理是很简单的,主要管理是在 CNullVideoDriver 中完成的,就是维护了一个

ITexture* 的vector,当通过getTexture(const char* name)来得到纹理时,查看name的纹理是否在vector,在就返回,不在就加载name的图片并创建

CD3DTexture并插入vector中。还是很基本的,对于大型的游戏包含很多的图片数据的话这个管理是不行的,稍后看一下OGRE对纹理是何如管理的,嘎嘎!!!

       不过对于小型的游戏,这个足够了,简单效率就高!就写到这吧,很少写东东,真难,以后逼着自己学习写东西了,加油~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值