案例1:
我通过创建纹理
D3DXCreateTexture(device, width, height, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)
并用白色更新纹理。
D3DLOCKED_RECT lr;
HRESULT hr = texture->LockRect(0, &lr, NULL, 0);
ConvertRGB2RGBA(width, height, pixels, stride, (unsigned char*)(lr.pBits), lr.Pitch);
texture->UnlockRect(0);
渲染结果显示为:
我想要的是表面上的纯白色。
所有顶点的z值等于0.0f。
案例2:
如果我创建纹理
D3DXCreateTextureFromFile(device, "e:\\test.bmp", &texture);
并且不更新纹理,它显示绝对正确。
case 3:
如果我从文件创建纹理为case 2,并将纹理更新为case 1,结果不正确,test.bmp 内容略有保留。
结论:
更新纹理一定有问题。怎么了???
解决了!!!
将级别参数更改为1,然后它就可以工作了。
D3DXCreateTexture(device, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)