游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1654|回复: 1

请教SetTexture以及Alpha设置问题

[复制链接]

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2010-9-18 10:10:00 | 显示全部楼层 |阅读模式
最近做地形,在没添加海水之前还算正常,但是添加海水后却出现了问题。我的细节纹理是这样设置的
//设置地形基本纹理
m_pDevice->SetTexture( 0, m_TerrainTex.m_pTerrainTex);
//设置纹理融合
m_pDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0);//0层纹理使用第0组纹理坐标
m_pDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);//设置ARG1 = 当前0层纹理颜色
m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE);//禁止Alpha通道混合  
m_pDevice->SetTexture( 1, m_pDetailTex);
m_pDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1);//1层纹理使用第1组纹理坐标
m_pDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE);//设置ARG1 = 当前1层纹理颜色
m_pDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT);//设置ARG2 = 上层纹理颜色
m_pDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_MODULATE2X);//将颜色相乘 ARG1 * ARG2
m_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);//禁止Alpha通道混合
效果正常


然后我的海水纹理设置如下
//禁用背面消除(因为海水应该是上下都可见的)
  m_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
  //设置漫反射来源
  m_pDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
  m_pDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
  m_pDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE);//将海水纹理乘以漫反射值后输出
  m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);//选择漫反射值作为Alpha运算来源
  m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
  //设置
  m_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);//源纹理融合系数
  m_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);//目标纹理融合系数
//开启融合状态
m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true);
m_pDevice->SetTexture( 0, m_pWaterTex);//设置纹理
hr = m_pDevice->DrawIndexedPrimitive(……);     //绘制海水
//关闭融合状态
m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, false);

结果是海水出来了。。但是地形却挨染色了、、、、请问是哪里设置错了吗???我怀疑是SetTexture()搞错了。。求高人指点啊。。。感激不尽。。。

11

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2010-9-18 22:12:00 | 显示全部楼层

Re:请教SetTexture以及Alpha设置问题

这个问题也自己解决了。。原来设置融合状态设置得对应放去渲染函数里面去。。之前是把海水和地形的融合状态放在了一次。。导致渲染的时候颜色乱了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-6 14:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表