首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

用D3DXCreateTexture()怎么加载一个png图像?

2012-03-08 
用D3DXCreateTexture()如何加载一个png图像??主要是LockRect()后,图像数据怎么拷贝进来?。。。。。。好像要用什

用D3DXCreateTexture()如何加载一个png图像??
主要是LockRect()后,图像数据怎么拷贝进来?。。。。。。
好像要用什么位运算,要解析像素数据到字节数组。

[解决办法]
为什么会选择它呢? 

C/C++ code
   HRESULT hr = 0;    hr = D3DXCreateTexture(        _device,        texWidth, texHeight,        0,         0,         D3DFMT_A8L8,//纹理格式        D3DPOOL_MANAGED, &_tex);    if(FAILED(hr))        return false;    D3DSURFACE_DESC textureDesc;     _tex->GetLevelDesc(0, &textureDesc);    if(textureDesc.Format != D3DFMT_A8L8)         return false;    D3DLOCKED_RECT lockedRect;    _tex->LockRect(0, &lockedRect,0, 0);             //使用类型要对应(unsigned short --- D3DFMT_A8L8)    unsigned short* imageData = (unsigned short*)lockedRect.pBits;    for(int i = 0; i < texHeight; i++){        for(int j = 0; j < texWidth; j++){            //Pitch数据的总长度            int index = i * lockedRect.Pitch / 2/*D3DFMT_A8L8 二字节*/ + j;            if(i < 64)                imageData[index] = 0x00;            else                imageData[index] = 0xFF;        }    }    _tex->UnlockRect(0);        //保存纹理    hr = ::D3DXSaveTextureToFile("a.png", D3DXIFF_PNG, _tex, NULL);    if(D3DERR_INVALIDCALL == hr)        ::MessageBox(NULL,NULL,NULL,NULL); 

热点排行