游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1991|回复: 2

刚刚发现,D3DTA_TEMP在固定流水线中是个很有用的东东

[复制链接]

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-4-20 13:26:00 | 显示全部楼层 |阅读模式
用途:一般性寄存器,支持读/写
使用举例:       
pD3DDev->SetTextureStageState( ..., D3DTSS_RESULTARG, D3DTA_TEMP ); //本轮计算结果输出到Temp寄存器

pD3DDev->SetTextureStageState( ..., D3DTSS_COLORARG1, D3DTA_TEMP ); //把Temp
寄存器作为输入寄存器

pD3DDev->SetTextureStageState( ..., D3DTSS_RESULTARG, D3DTA_CURRENT ); //本轮计算结果输出到正常的Color/Alpha寄存器

支持“写操作”,这个用处很重要,有些Fixed Function Pipeline计算出的数据如果需要临时保存的话,又不能覆盖掉Color/Alpha寄存器的时候,我们就可以把数据保存到D3DTA_TEMP这个临时寄存器。

笔者今天就有一个本打算采用PixelShader的程序,最后通过D3DTA_TEMP的帮助,在固定流水线中得以实现。

固定流水线虽然功能限制很大,远不如Shader能随心所欲,但还是值得研究的。

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-4-20 13:55:00 | 显示全部楼层

Re:刚刚发现,D3DTA_TEMP在固定流水线中是个很有用的东东

希望LZ 能?些?D片示例, 因??Z 描述的例子的作用不明白, 而我亦有研究?量以 FFP 代替 shader 做效果.

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2006-4-20 14:11:00 | 显示全部楼层

Re: 刚刚发现,D3DTA_TEMP在固定流水线中是个很有用的东东

//本轮进行取纹理Alpha值和RGB值
pD3DDev->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pD3DDev->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pD3DDev->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
pD3DDev->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_SELECTARG1 ); // 注意此处,取Alpha值到颜色寄存器

//本轮进行RGB的DP3运算
pD3DDev->SetTextureStageState( 1, D3DTSS_RESULTARG, D3DTA_TEMP ); // 结果输出到Temp寄存器
pD3DDev->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT );
pD3DDev->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_DOTPRODUCT3 ); // 注意:此处DP3运算会将结果输出到寄存器的所有分量(.rgba),所以,不能直接将结果输出到“颜色寄存器”,因为这样会覆盖掉之前取到的Alpha分量,而应指定输出到Temp寄存器
pD3DDev->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );

//本轮将DP3运算的结果取回到颜色寄存器的RGB分量中
pD3DDev->SetTextureStageState( 2, D3DTSS_RESULTARG, D3DTA_CURRENT ); // 恢复对颜色寄存器的操作
pD3DDev->SetTextureStageState( 2, D3DTSS_COLORARG1, D3DTA_TEMP ); // 从Temp寄存器取出RGB值到颜色寄存器
pD3DDev->SetTextureStageState( 2, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 07:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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