討論區快速選單
知識庫快速選單
網路投保旅行平安險 軟實力課程1+1,第二科享5折優惠 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
Texture 本身的 alpha 與整體半透明怎麼同時實現?
更改我的閱讀文章字型大小
作者 : yowshian(森淼)
[ 貼文 4 | 人氣 0 | 評價 50 | 評價/貼文 12.5 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/1/9 下午 11:30:38
小弟使用一張含有alpha channel的png圖片當作texture,這張圖片是背景透明的動畫人物立繪,而其他部分則有不同的透明度(例如柔邊部分與髮絲),所以小弟使用以下RenderState的設定,成功實現用圖片本身alpha值的半透明效果。

D3DXCreateTextureFromFileExA(...);

pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE);
pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );

可是小弟為了做出類似AVG中人物淡入淡出的效果,還要能控制貼出圖片的整體透明度。於是小弟又做了以下嘗試:

D3DXCreateTextureFromFileExA(...);
D3DCOLOR color = D3DCOLOR_RGBA( 255, 255, 255, 100);

pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, color );
pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE);
pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR );
//pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );

結果出現了預料中的問題,圖片是半透明了,但是背景都因為D3DTA_TFACTOR 的設定跟 color 變數混合了,變成背景是半透明的白色。

小弟實在是想不到辦法,google也搜尋不到相關的資料,還請拜託前輩們幫忙解惑,感激不盡。
作者 : dorkas(aming) VC++優秀好手遊戲程式設計卓越專家DirectX頂尖高手C++優秀好手貼文超過2000則
[ 貼文 2624 | 人氣 4536 | 評價 11810 | 評價/貼文 4.5 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/3/8 上午 10:23:38
Using stencil buffer 把不要畫得先遮蔽
 板主 : 白老鼠(Gary)
 > DirectX - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - DirectX - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
DirectX
1 aming 4010 
2 pernghy 1780 
3 白老鼠(Gary) 1120 
4 Akira 1020 
5 冷眼 980 
6 PLAYER 690 
7 阿西德倫 480 
8 andre 450 
9 小弦 430 
10 藍斯洛 410 
DirectX
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875