游戏开发论坛

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

请教 关于多成纹理alpha通道设置的问题

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-2-27 11:06:00 | 显示全部楼层 |阅读模式
假设有
IDirect3DTexture9* pTecture1;
IDirect3DTexture9* pTecture2;


pTecture1和pTecture2是用photoshop制作的tga图片

我现在想使我的模型的透明度即要由pTecture1的alpha通道控制有要由pTecture2的alpha通道控制应该怎样设置?

//**************************
我知道可以这样写
pd3dDevice->SetTexture(0,pTecture1);                //1
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_ADD);   //2
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);  //3
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);  //4
pd3dDevice->SetTexture(1,pTecture2);                //5
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_ADD);    //6
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);  //7
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG2,D3DTA_CURRENT);  //8
如果按照这样书写的话纹理层0的alpha通道的值是pTecture1的alpha通道的值加上模型材质的alpha通道的值,
纹理层1的alpha通道的值是pTecture1的alpha通道的值加上pTecture2的alpha通道的值.

但是好象纹理层1的alpha通道不能使模型变得半透明,纹理层0的alpha通道可以(我实验的,不知道有没有错误)

但是我想实现的效果是要模型的透明度受两个纹理的alpha通道控制,如果把第4行的"D3DTA_DIFFUSE"改为"D3DTA_CURRENT"的话又不行,因为前边一层纹理根本不存在.

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2008-2-27 13:07:00 | 显示全部楼层

Re:请教 关于多成纹理alpha通道设置的问题

你应该用D3DTOP_BLENDTEXTUREALPHA
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 06:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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