纹理融合的问题,求高手指正

chao23387784 2013-01-25 10:28:55
想让下一层纹理加载的时候覆盖掉上一层的相应部分 但是执行以后下层纹理加载的时候覆盖面变成了单一颜色了 是不是融合的时候出问题了 代码如下
m_pDevice->SetTexture( 0, m_pTex ); // 0号纹理

m_pDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE);

m_pDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);

m_pDevice->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);

m_pDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);

m_pDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

m_pDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );

m_pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);

if(m_bSel) //一号纹理确认加载
{
m_pDevice->SetTexture( 1, m_pLodTex); //1号纹理

m_pDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_SELECTARG2);
m_pDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_CURRENT);
m_pDevice->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_TEXTURE);
m_pDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_DISABLE);

m_pDevice->SetSamplerState( 1, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );
m_pDevice->SetSamplerState( 1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
m_pDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 );

}

...全文
192 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tiandu0803 2013-03-31
m_pDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 ); 这段代码中,你的纹理坐标确定是用第一层纹理坐标么(区别于第0层),另外, 你的各层纹理坐标是否相同,如果不相同的话,你要保证你的第一层u,v坐标是正确的。
  • 打赏
  • 举报
回复
minnnnnmi 2013-03-16
m_pDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_SELECTARG2); 这个设置有问题,代表选择的是1号纹理。之前的0号纹理就被覆盖了。
  • 打赏
  • 举报
回复
彩阳 2013-01-25
载入1号纹理的时候混合模式选择调制的看看。
  • 打赏
  • 举报
回复
相关推荐
发帖
游戏开发
加入

8061

社区成员

游戏开发相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-01-25 10:28
社区公告
暂无公告