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

从内存创建纹理出错,该如何解决

2012-02-16 
从内存创建纹理出错从内存数据中生成纹理,内存的数据是个24位的纹理图,我读取出来却是不是原来的纹理图。原

从内存创建纹理出错
从内存数据中生成纹理,内存的数据是个24位的纹理图,我读取出来却是不是原来的纹理图。
原来的图(试试外链图):

生成的纹理图却是:

在线等:

C/C++ code
    if (FAILED(D3DXCreateTexture(TBDevice::GetDevice(),width,height,1,0,D3DFMT_R8G8B8,D3DPOOL_MANAGED,&m_pTexture)))    {        ::MessageBox(0,"创建空白纹理失败","ERROR",0);        return false;    }        assert(m_pTexture->GetLevelCount() > 0);    m_pTexture->GetLevelDesc(0,&m_surfacedesc);    D3DLOCKED_RECT lockRect;    if(FAILED(m_pTexture->LockRect(0,&lockRect,NULL,0)))    {        ::MessageBox(0,"LockRect失败","ERROR",0);        return false;    }    memcpy(lockRect.pBits,pSrcData,dataSize);    m_pTexture->UnlockRect(0);


[解决办法]
不懂,帮顶!
[解决办法]
探讨

问题已解决,主要是不支持24位的纹理D3DFMT_R8G8B8创建,D3DXCreateTexture函数自动转为32位的纹理,所以生成的纹理图大小为192k/256k;把24位数据转为32位数据即可。就这样结贴,可惜了,随便进几个人,我送分(不违背版规吧)。

热点排行