我正在做一個模擬器可視化,其中有很多表示模擬元素的2D圖標,而且我有一個3D(使用Blender製作的.x)圖標,代表另一個和更重要的元素。在C++中使用直接x 9的頂部表示的3D圖標
我需要在其他2d圖標(.tga)之上製作這一個,但我找不到這樣做的方法。 Direct x可以在其餘的2d圖標上繪製一個3d圖標嗎? 此時,3D圖標上的2D圖標始終顯示。
可以請別人幫我這個。我正在用C++編程 非常感謝。
我正在做一個模擬器可視化,其中有很多表示模擬元素的2D圖標,而且我有一個3D(使用Blender製作的.x)圖標,代表另一個和更重要的元素。在C++中使用直接x 9的頂部表示的3D圖標
我需要在其他2d圖標(.tga)之上製作這一個,但我找不到這樣做的方法。 Direct x可以在其餘的2d圖標上繪製一個3d圖標嗎? 此時,3D圖標上的2D圖標始終顯示。
可以請別人幫我這個。我正在用C++編程 非常感謝。
當您渲染2D圖標時禁用Z-寫入。當您隨後使用Z-writes渲染渲染3D圖標時,它將在2D圖標上渲染。
你現在的問題是,當你渲染2D圖標時,你正在使用z緩衝區前端的z值(最可能是0)。你也可以發現你可以將z值設置爲1(也許這完全取決於你如何設置2D渲染)來強制2D圖標在z緩衝區的後面進行渲染。
Z緩衝區中沒有條目等同於它位於Z順序的後面。
假設您啓用了深度緩衝功能,您需要確保圖標的Z值比您的模型遠離相機。如果您使用的是ID3DXSprite,則應在調用Draw函數時或使用ID3DXSprite::SetTransform()函數時指定Z位置。
請注意,根據您傳遞給ID3DXSprite :: Begin()的標誌,ID3DXSprite可能會使用與您的模型不同的投影矩陣繪製您的精靈。您可能想要使用D3DXSPRITE_OBJECTSPACE標誌。
感謝這兩個! – Rosa 2011-03-07 14:19:17
@Rosa:你可以接受一個或其他答案:) – Goz 2011-03-07 17:24:38