凹凸貼圖(Bump Mappinig)固定光線實現方法

本方法是凹凸貼圖的實現方法之一,適用於任何圖形卡,包括不支持硬件貼圖的顯卡。注:頂點格式和其他要點待補充。參考DXSDK 例子BumpSelfShadow.

具體代碼如下:

LPDIRECT3DTEXTURE9 m_ctex;//貼圖紋理

LPDIRECT3DTEXTURE9 m_mtex;//高度圖原始圖像

LPDIRECT3DTEXTURE9 m_ntex;//生成的凹凸信息紋理

1。生成兩個紋理

 D3DXCreateTextureFromFile(m_pDev,"skybox_back.JPG",&m_ctex);
 D3DXCreateTextureFromFile(m_pDev,"earthbump.bmp",&m_mtex);
 D3DXCreateTexture(m_pDev,iWidth,iHeight,0,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&m_ntex);
 D3DXComputeNormalMap(m_ntex,m_mtex,NULL,0,D3DX_CHANNEL_BLUE,10);

2。渲染部分

        m_pDev->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3);
        m_pDev->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        m_pDev->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
        m_pDev->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
        m_pDev->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );


        m_pDev->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_MODULATE);
        m_pDev->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
        m_pDev->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT);
        m_pDev->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
        m_pDev->SetTextureStageState( 1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);


        m_pDev->SetTexture(1,m_ctex);
        m_pDev->SetTexture(0,m_ntex);  

發佈了19 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章