2012-09-13 74 views
1

情況1
我通過的DirectX - 紋理渲染的結果是不正確

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

渲染結果顯示爲:

enter image description here我要的是表面上的純白色。

所有頂點的z值等於0.0f。

情況下2
如果我創建由

D3DXCreateTextureFromFile(device, "e:\\test.bmp", &texture); 

的質地和不更新紋理,它顯示是絕對正確的。

殼體3
如果創建從文件中的紋理殼體2,並更新紋理殼體1,結果是不正確,有TEST.BMP內容稍有殘留。

結論:
一定有什麼毛病更新質感。怎麼了???


解決!
更改級別參數爲1,然後它工作。

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

添加您的解決方案作爲答案。這樣,問題可以被認爲是解決的。 –

回答

0

恭喜。當D3DXCreateTexture的mipmap級別參數設置爲0時,將創建完整的mipmapped紋理。如果你想使用mipmap,你的函數ConvertRGB2RGBA不僅應該覆蓋頂層紋理,而且應該覆蓋更低層次的紋理。

0

更改級別參數爲1,然後它工作。

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