嗯 這個問題不知道大家有沒有遇過...
2D跟3D同時在一個程式呈現的時候,如果用預設的設定會發生,模型都變成透明的了!!!
我被這個問題困擾很久了...
想過BLEND等等的問題,結果都沒成功
這種問題,只要在2D貼圖跟3D貼圖同時進行的時候,都會發生~~~
我也問過同學這種問題他們有沒有碰過跟說在OPENGL情況下,需要更動像是ALPHA BLEND
不過經過我測試過後來是沒辦法...
這兩天在網路上找到一個文章
作者有提到如果2D跟3D要一起用的話的呈現方式
(老實說,2D跟3D一起用這個簡直就是家常便飯~~~如RPG的血量表、ITEM等等)
那我們應該要在哪邊動刀?
嘿嘿~~~答案就是,2D的繪圖前製動作
spriteBatch.Begin();
上面這一行,這個關鍵的函數
他有以下多載~~
SpriteBatch.Begin ()
SpriteBatch.Begin (SpriteBlendMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode, Matrix)
基本上,前兩個多載,在這種問題沒有任何幫助ORZ
所以用3或4就可以,這邊用3就OK~
設定如下
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Deferred, SaveStateMode.SaveState);
第三個參數,這整個核心的部分,如果這邊設成NONE的話,就會變成原本的問題
他的用意就是,當呼叫到Begin這個2D貼圖的方法時候,他會儲存所有設備的狀態,直到遇到END才恢復。
預覽圖
正確要呈現的
錯誤的呈現
由上面兩張圖片不難看出,差別在哪~~
程式碼 :
XNA2.0
140.126.21.8/~b09402129/XNA/example5.rar
2D跟3D同時在一個程式呈現的時候,如果用預設的設定會發生,模型都變成透明的了!!!
我被這個問題困擾很久了...
想過BLEND等等的問題,結果都沒成功
這種問題,只要在2D貼圖跟3D貼圖同時進行的時候,都會發生~~~
我也問過同學這種問題他們有沒有碰過跟說在OPENGL情況下,需要更動像是ALPHA BLEND
不過經過我測試過後來是沒辦法...
這兩天在網路上找到一個文章
作者有提到如果2D跟3D要一起用的話的呈現方式
(老實說,2D跟3D一起用這個簡直就是家常便飯~~~如RPG的血量表、ITEM等等)
那我們應該要在哪邊動刀?
嘿嘿~~~答案就是,2D的繪圖前製動作
spriteBatch.Begin();
上面這一行,這個關鍵的函數
他有以下多載~~
SpriteBatch.Begin ()
SpriteBatch.Begin (SpriteBlendMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode)
SpriteBatch.Begin (SpriteBlendMode, SpriteSortMode, SaveStateMode, Matrix)
基本上,前兩個多載,在這種問題沒有任何幫助ORZ
所以用3或4就可以,這邊用3就OK~
設定如下
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Deferred, SaveStateMode.SaveState);
第三個參數,這整個核心的部分,如果這邊設成NONE的話,就會變成原本的問題
他的用意就是,當呼叫到Begin這個2D貼圖的方法時候,他會儲存所有設備的狀態,直到遇到END才恢復。
預覽圖
正確要呈現的
錯誤的呈現
由上面兩張圖片不難看出,差別在哪~~
程式碼 :
XNA2.0
140.126.21.8/~b09402129/XNA/example5.rar
文章標籤
全站熱搜

之前按照XNA HELP做這個範例的時候也碰到這個問題 想不到在這邊找到解決方法 很感激~
噗噗~ 這個東西我也用了一兩個禮拜 結果重要的是SaveStateMode.SaveState... 沒有這個,就用不會有這個效果了~ 那個效果是儲存所有設備的內容,因為可能根據不同的情況,設備狀態會被更改,所以將那些資訊都存起來的話,就可以避免了
這連結已經失效啦 不過這問題我是沒遇到過 不過我上次遇到的那麼模型的問題 好像也是類似這種問題 也是設備的問題 我是加上 graphics.GraphicsDevice.RenderState.DepthBufferEnable = true; 這段程式碼就成功解決問題了 這樣我的模型就正常了 不過不太懂後面的理論@@|| 還有順便問個問題 以下這個範例不知道要如何才能跑 http://www.cs.pu.edu.tw/~s9471115/project/UpgradedGame1.rar 不知道是不是副檔名X的關係 所以才讀不到的
這邊很多東西都失效了... 我要等七月中才有空... 像剛剛才完成一個期末Project... DepthBuffer是深度緩衝器,用來判斷點的前後關係
解決讓我頭痛的問題 非常感謝你提供的資訊 :)