游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2463|回复: 7

关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

[复制链接]

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-2-5 19:59:00 | 显示全部楼层 |阅读模式
请问纹理混合的D3DTOP_MULTIPLYADD操作公式:SRGBA = Arg1 + Arg2 * Arg3
里的Arg1、2、3是啥?敬请赐教.

dwFactor=0x00000000f;
g_pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, dwFactor
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );       
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_DOTPRODUCT3 );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TFACTOR );

g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_MULTIPLYADD );//这里
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP,   D3DTOP_SELECTARG1 );
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );

下面是D3DTOP_MULTIPLYADD操作的公式:
D3DTOP_MULTIPLYADD
Performs a multiply-accumulate operation. It takes the last two arguments, multiplies them together, and adds them to the remaining input/source argument, and places that into the result.
SRGBA = Arg1 + Arg2 * Arg3

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2007-2-6 14:36:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

请赐教一下,拜托,plz!

8

主题

284

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
QQ
发表于 2007-2-6 15:29:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

看看DX文档里的Texture Blending章节

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2007-2-7 13:34:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

谁可以赐教一下呀...

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
发表于 2007-2-8 01:55:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

是不是stage 1少设了一个参数,好像Arg0没设。
而且不太让人看得明白的是从stage 0开始的计算dot3似乎没起作用阿?

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2007-2-8 14:20:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

这是King_jinjing关于这个问题的回复
SRGBA = Arg1 + Arg2 * Arg3
Arg1是上层纹理操作的结果,在你的例子里是纹理层0操作后的结果。
Arg2 和 Arg3 是本层纹理里你设置的ColorArg1 和 ColorArg2,不管其顺序因为他们是一个乘操作所以顺序无所谓。
相乘后的值再加上上层的值就是本层的操作值。
以上。

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2007-2-8 14:21:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

非常感谢King_jinjing,像他这样热心的人越来越少了。。。

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2007-2-10 18:53:00 | 显示全部楼层

Re:关于纹理混合D3DTOP_MULTIPLYADD操作的问题,敬请赐教.

哦。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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