2012-12-13 56 views
1

我目前正在從DirectDraw系統(是的,我知道,這是非常舊的)升級到DirectX10。這是一個2D系統,但模擬真實世界,因爲每個物體都有以米爲單位的範圍/深度。有一個背景圖像呈現並保持在最遠的z順序。所有其他物體都在其上繪製,並根據它們的範圍/深度進行縮放。但是,我有一個特定類型的對象被定義爲多邊形,並呈現一些不同。它充當無形的遮擋物。例如,封堵器的範圍/深度爲40(我的單位是米),並由視口中間的5個頂點(五邊形)定義。在相同的視口位置有一個精靈對象,但是其範圍/深度爲50.所需的輸出是讓精靈對象不被渲染,但是通過它們兩個都可以看到背景。所以實質上這些都是隱形封堵器,只是它們不遮擋背景。呈現隱形遮擋物

作爲一個說明,該封堵器和精靈全部來自同一基礎對象類型派生的和在深度排序的容器中混合在一起。

我的想法是重寫封堵器渲染方法,以便繪製到渲染目標,寫入範圍/深度值。然後我會像往常一樣渲染精靈,但是在頂點或像素着色器中會將精靈的範圍值與渲染目標中的範圍值進行比較。然而,在我看來,我必須在Present被調用之前在相同的通道中可能讀取/寫入渲染目標,並且這是未定義的。如果我要渲染遮擋物,解除渲染目標並將紋理傳遞給其他對象進行查找,則必須將這些精靈位置轉換爲可能不平凡的紋理空間。這兩種方法中的哪一種可能?

想到更多關於它之後,想到了另外一個想法。我可以採用遮擋物並根據背景紋理設置紋理座標。通過這種方式,他們可以繪製出與背景相同的顏色值,並且由於如果精靈在背後進行排序,用戶仍然會看到「背景」,但實際上它就像是它的封閉器。

對不起,如果這不是一個問題,更多的想法大聲,但我想獲得印象和想法的最佳途徑去做這件事。在我看來,我有選擇,但不確定哪一個最高效,哪一個最簡單。預先感謝您的回覆。

+0

因此,我參照背景圖像設置了紋理座標。它最終成爲一個相當簡單的過程,真正有趣的部分是做多邊形三角測量,以獲得填充的多邊形甚至使用紋理座標。 – hydronics311

回答

0

正如我的意見說我去設置參照背景圖像的紋理座標,然後確保封堵器,這是一個簡單的多邊形,被正確三角充分利用這些紋理座標。