我設置了模板緩衝區,因此只有部分屏幕受到繪製調用的影響。具體來說,我想繪製一個小區域。它將成爲一個用戶界面,所以繪製的一切都將是某種2D精靈。使用精靈對象工作得很好。區域外的精靈被切斷。 但是,當我添加文本時,以後繪製的所有內容和文本本身都不會被切斷。 PIX顯示,一旦調用繪製文本,關閉模板緩衝區就會設置新的DepthStencilState。文本由負責繪製其他精靈的同一個精靈對象繪製。用模板緩衝區繪製文本
圖形通過SlimDX.Direct3D10.Font.Draw方法執行。
有沒有辦法強制DirectX不改變狀態對象?我使用SlimDX,但根據它的代碼,它似乎不負責狀態變化。
尼科
大概是因爲它的DirectX10您使用着色器來畫這個,如果使用效果框架我相信你可以在效果中設置深度貼圖狀態。也許你正在使用的效果是設置這個,你不得不在效果文件中查看程序代碼嗎? – jcoder 2012-03-16 10:48:12
那麼,這可能是可能的。但是,我直接使用Font類。所以我無法訪問效果文件。但是繪圖是通過Sprite對象執行的,我假設Font類使用與繪製簡單精靈相同的方法。所以我懷疑它在着色器本身是一個問題。 – 2012-03-16 12:46:08
http://www.gamedev.net/topic/573166-dx10-id3dx10sprite-and-sampler-states/討論了這種......並不幸似乎得出結論,沒有一些可怕的黑客,你無法避免它設置說明它的意圖 – jcoder 2012-03-16 12:56:18