1

テクセルとUVの間で変換しようとしています

1/widthまたはを実行することでテクセルのサイズを定義できると思いました1/height。それを除算してテクセル番号を取得します。

私は間違っています。

これが私がやろうとしてきたことです。

float4 PostPS(PostIn In) : SV_Target
{
    float4 color = 0;

    uint width, height;
    PostTex.GetDimensions(width, height);

    float2 uv = In.texCoord;
    float2 texelSize = float2(1/width, 1/height);

    // Convert coords to texels
    uint x = (uv.x / texelSize.x);
    uint y = (uv.y / texelSize.y);

    // Convert back again to uv.
    uv.x = x * texelSize.x;
    uv.y = y * texelSize.y;

    color = PostTex.Sample(pointFilter, uv);

    return color;
}

ある程度の丸め誤差がある可能性があることはわかっていますが、ある程度は機能したと思います。

ありがとう。

4

1 に答える 1

1

幅と高さをuintとして宣言しました。1もintまたはuintです。uintとuintを分けると、uintが得られます。したがって、texelSizeは常に(0、0)になります。

テクセルサイズで割る代わりに、幅と高さを掛けます。

uint x = uv.x * width;
uint y = uv.y * height;
于 2012-04-24T12:34:21.863 に答える