作者QHsin (Q馨)
看板GameDesign
標題[程式] 請教DX10 Sprite 和 反鋸齒 問題
時間Tue Sep 20 11:11:13 2011
請教以下兩個問題,上網找了很久一直找不到解答
問題一.
處理2D貼圖的時候使用了ID3DX10Sprite,但卻一直搞不懂一些細節的作用機制。
我想在2D貼圖貼完之後再做其他處理,於是做了以下的事情。
1.pSprite->Begin(0);
2.pSprite->DrawSpritesBuffered(XX, 5);
3.pSprite->Flush();
4.pSprite->End();
//將backbuffer儲存成檔案的函式
5.GO.SaveTexture(myD3D.GetBackBuffer(),L"D:\\bbbb.png");
6.pSwapChain->Present(0, 0);
預期應該bbbb.png是圖A:
http://i.imgur.com/w3OVj.png
卻跑出圖B:
http://i.imgur.com/18r5H.png
意思是說,Sprite是在6.的時候才會作用完畢嗎?
又,在2.和3.間加入一個輸出文字的函式pD3DXFont->DrawText(pSprite,xxxxxxx)
好像又會強制pSprite貼出圖片至backbuffer,得到預期的結果圖A,
目前就暫時只能用這招偷吃步,不然很多效果做不出來,不知道是否有正確的做法?
問題二.
這可能是個笨問題:『DX10要怎麼開反鋸齒』
這我真的查了很久,卻找不到完整的範例。
看到說要調
rasterDesc.AntialiasedLineEnable = true;
rasterDesc.MultisampleEnable = true;
但只調這個沒效果出來,
又調整pSwapChain的SampleDesc.Count和SampleDesc.Quality,結果就出錯。
不知道有沒有這部分詳細說明,還請大家幫忙。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.137.184
※ 編輯: QHsin 來自: 123.194.137.184 (09/20 11:15)
推 teexit:看了你寫的1-6 不知道是不是function沒寫完整 09/27 14:06
→ teexit:剛剛稍微看了一下,你試試看用下面方式做 09/27 14:07
→ teexit:方法1: sprite->Begin... sprite->DrawSpritesBuffered... 09/27 14:08
→ teexit:sprite->Flush...sprite->End... 這樣做完就會畫在BackBuf 09/27 14:08
→ teexit:再用SwapChain->Presen Flip到Screen就好了 09/27 14:09
→ teexit:方法2: sprite->Begin... sprite->DrawSpriteImmediate... 09/27 14:10
→ teexit:sprite->End... SwapChain->Presen... 這兩個方法 09/27 14:10
→ teexit:至於AA的部分...請看一下SDK吧 搜尋MSAA 09/27 14:11
→ teexit:要不然最近還有一種熱門方法MLAA 09/27 14:16
→ teexit:COST來的低,下面有SOURCE CODE也可以直接使用 注意他的 09/27 14:16
→ teexit:License 09/27 14:17
→ QHsin:哦哦,感謝teexit大的說明,我回去再研究看看,感謝 09/27 15:22