凹凸贴图(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);  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值