2011-02-23 37 views
0

我已經將兩個bloom類放入我的Bloom樣本項目中,並遵循與樣本相同的步驟,但是當我啓動該項目時,我現在得到的所有空白紫色屏幕?XNA Bloom Sample - 空白紫色屏幕

我沒有收到任何錯誤或任何信息,我所做的只是從示例中包括兩個bloom類,將它作爲組件添加並將開始繪製調用放在我的主繪製函數中,就像在示例中一樣。我的項目中有其他渲染目標,但不一定馬上使用。如果我把盛開的東西拿出來,一切都是正常的。只要我打電話給begindraw()函數,我所得到的是臭名昭着的空白紫色屏幕......

有沒有人有一個想法,爲什麼我得到這個?

  • 傑米。
+0

你能發表一些代碼嗎?這會讓你更容易幫助你。另外,你在你的項目中使用了'DrawableGameComponents' /'GameComponents'嗎? – 2011-02-23 13:38:22

回答

1

診斷這類問題的最佳方法是使用PIX(在DirectX SDK中)。

紫色表示渲染目標內容已被框架清除。 This blog post explains why並提供了一些解決方案。

簡而言之,你不能將東西繪製到後臺緩衝區,切換到渲染目標,然後再次切換到後臺緩衝區,並期望繪製的東西仍然存在。至少不在XBox 360上 - 並且PC版本的XNA框架模擬這種行爲。

如果您希望能夠切換回後臺緩衝區並使其不受損害,可以將後緩衝區(或渲染目標,取決於您如何渲染)的RenderTargetUsage設置更改爲如該博客文章中所解釋的那樣,可以使用PreserveContents。請注意,在Xbox 360上這是一個龐大的性能問題。

一個可能更好,更合適的方法是調整繪圖的順序,以便您不必「返回」曲面。

Link to a similar, recent question/answer。)

+0

我不再是紫色了,我在繪製之前就已經清除了顏色 - 在這種情況下是青色 - 這意味着屏幕上實際上沒有繪製任何東西? – Jamie 2011-02-23 13:53:13

+0

@Jamie:如果你根本沒畫任何東西(我想它也可能是紫色的),我不記得清晰的顏色是什麼。你不是指來自XNA模板的默認'CornflowerBlue',是嗎? – 2011-02-23 13:57:47

+0

對不起,我的意思是矢車菊藍線,雖然我把它設置爲青色在這種情況下。 – Jamie 2011-02-23 13:59:47