我有一個非常微妙的問題與XNA,特別是SpriteBatch。 在我的遊戲中,我有一個Camera類。它可以翻譯視圖(顯然),也可以放大和縮小。 當我調用我的spritebatch實例(最後一個參數)的「Begin」函數時,我將相機應用於場景。SpriteBatch drawcalls被XNA撲殺了嗎?
問題:當相機Zoomfactor大於1.0f時,spritebatch停止繪圖。 我試圖調試我的場景,但我找不到出錯的地方。
我試圖用「Matrix.CreateScale(2.0f);」作爲「開始」的最後一個參數。 所有其他參數都爲空,並且是第一個「SpriteSortMode.Immediate」,所以沒有自定義着色器或其他東西。 但SpriteBatch仍然不想繪製。
然後我試着只調用「DrawString」,並且DrawString與提供的尺度(2.0f)一起完美地工作。然而,通過大量的試驗和錯誤,我發現將ScaleMatrix乘以「Matrix.CreateTranslation(0,0,-1)」以某種方式將「安全」值改爲1.1f。 所以所有Scale值最高可達1.1f。對於上面的所有內容,SpriteBatch在正常的「Draw」調用中不會呈現單個像素。 (DrawString仍然不受影響並正在工作)。
這是怎麼發生的? 我沒有設置任何視口或其他矩陣。 在我看來,這可能是某種奇怪的Near/Farclipping。 但我通常只知道從3d的東西這些參數。
如果有什麼不清楚的地方請問!
解決方案完美無缺。感謝您的深入解釋,這真的很有用! – riki