游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2887|回复: 6

纹理混合问题

[复制链接]

9

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2010-8-16 17:05:00 | 显示全部楼层 |阅读模式
我有两张纹理,一张是图片,另一张是alpha通道。如何在程序里将两张纹理和成一张,颜色通道使用图片的,alpha使用alpha通道图片。可能可以使用两个纹理单元来合成,有没有使用一个纹理单元就可以合成的。
注:不能使用rtt

9

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2010-8-16 17:09:00 | 显示全部楼层

Re:纹理混合问题

这么说,最终效果就是要在界面上显示这么一个图片:颜色使用一张普通图片,alpha使用另一张alpha通道图片来指定。

9

主题

75

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2010-8-17 15:41:00 | 显示全部楼层

Re:纹理混合问题

不透明的地方用255,255,255,255,两层纹理COLOR和ALPHA相乘

9

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2010-8-17 21:33:00 | 显示全部楼层

Re:纹理混合问题

是要使用2个纹理单元是吗?有没有具体点的代码?

11

主题

336

帖子

349

积分

中级会员

Rank: 3Rank: 3

积分
349
发表于 2010-8-18 07:38:00 | 显示全部楼层

Re: 纹理混合问题

纹理融合

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2010-8-18 12:01:00 | 显示全部楼层

Re:纹理混合问题

dx9里面lock unlock这个纹理
dx10里面 map unmap这个纹理
然后写像素进去,爱咋搞就咋搞

19

主题

37

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2010-8-23 12:45:00 | 显示全部楼层

Re:纹理混合问题

m_pDevice->SetTexture( 0, pTexture );
m_pDevice->SetTexture( 1, pAlpha );

m_pDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT ); // 将 Stage0 的颜色当成 COLORARG1; D3DTA_CURRENT 指的是上一次计算的输出,这里相当于 pTexture 的纹理
m_pDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); // 将 COLORARG1 的颜色当成输出
m_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG1, D3DTA_CURRENT ); // 将 Stage0 的 Alpha 当成 ALPHAARG1
m_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG2, D3DTA_TEXTURE ); // 将当前( Stage1 即 pAlpha ) 的 Alpha 当成 ALPHAARG2
m_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2 ); // 将 ALPHAARG2 输出
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-18 20:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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