游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2277|回复: 5

HLSL tex2d 边界奇怪问题

[复制链接]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2009-3-14 22:33:00 | 显示全部楼层 |阅读模式
遇到一个奇怪问题,

float4 alpha = tex2D(WipeAlphaCueSampler,float2(0,0));  //按道理来讲它应该返回图像的第一列,可是总是返回一个灰度值

float4 alpha = tex2D(WipeAlphaCueSampler,float2(0.000001,0));  //这样才是图像的第一列

精度问题? 还是是显卡问题吗? 我是GF 9600GT的。
我试验了 ps_3_0 和 ps_2_0 都不行的。

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2009-3-14 22:46:00 | 显示全部楼层

Re: HLSL tex2d 边界奇怪问题

//below is the code ======================================================
texture WipeAlphaCue;
sampler WipeAlphaCueSampler =
sampler_state
{
    Texture = <WipeAlphaCue>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};
struct WipeVertexOutput {
           float4 Position        : POSITION;
    float2 UV                : TEXCOORD0;
    float2 Wipe                : TEXCOORD1;
};
float4 wipePS(WipeVertexOutput IN) : COLOR
{

float4 alpha = tex2D(WipeAlphaCueSampler,float2(0.0000001,0));
return alpha;
}
technique RenderScene
{
    pass p0
    {
PixelShader  = compile ps_2_0 wipePS();
    }
}

11

主题

650

帖子

651

积分

高级会员

Rank: 4

积分
651
发表于 2009-3-15 00:36:00 | 显示全部楼层

Re: HLSL tex2d 边界奇怪问题

感觉这是个问题,请求达人验证

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2009-3-15 09:46:00 | 显示全部楼层

Re: HLSL tex2d 边界奇怪问题

参看了SDK  Directly Mapping Texels to Pixels (Direct3D 9) ,大概明白了一点,这个缺省是wrap模式,超出边界部分,它是取得四个角的平均值。

如果我将 AddressU = Clamp;
模式设置成夹紧模式,float4 alpha = tex2D(WipeAlphaCueSampler,float2(0,0));  返回就是第一列数据啦。

在此谢谢resplendence的回复。

sampler WipeAlphaCueSampler =
sampler_state
{
    Texture = <WipeAlphaCue>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
    AddressU = Clamp;
    AddressV = Clamp;

};

30

主题

146

帖子

152

积分

注册会员

Rank: 2

积分
152
发表于 2009-3-15 09:54:00 | 显示全部楼层

Re:HLSL tex2d 边界奇怪问题

好像是左上填充规则么?

0

主题

56

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2009-3-16 11:54:00 | 显示全部楼层

Re:HLSL tex2d 边界奇怪问题

如果你在纹理采样时使用了Linear Filtering,那么你必须位移半个texel的位置才能采样到原本那个texel上的颜色。不过我觉得你不需要Linear Filtering的话可以考虑使用Point Sampling。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 03:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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