DirectX - 可纹理渲染的结果是不正确(directx - texture render r

2019-09-22 09:25发布

案例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);

不更新纹理,它显示是绝对正确的。

案例3:
如果我从文件创建纹理情况2,和更新纹理为1的情况下 ,结果不正确,有TEST.BMP含量略有保持。

结论:
一定有什么毛病更新质感。 怎么了???


解决了!!!
水平PARAM更改为1,那么它的工作原理。

    D3DXCreateTexture(device, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)

Answer 1:

恭喜。 当D3DXCreateTexture的纹理贴图级别参数设置为0,全mipmapped质感将被创建。 如果你想使用的贴图,你的函数ConvertRGB2RGBA不仅应包括顶级质感,而且较低的水平纹理。



Answer 2:

水平PARAM更改为1,那么它的工作原理。

D3DXCreateTexture(device, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture)


文章来源: directx - texture render result is incorrect