2012-04-24 8 views
0

の間の変換は、私は私が1/widthまたは1/heightを行うことによって、テクセルのサイズを定義できると思っていたテクセルとUVのDirectX10ののHLSL - UVとテクセルとバック

間の変換をやろうとしています。それを分割してテクセル番号を得る。

私は間違っています。

これは私がやろうとしていることです。

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; 
} 

ある程度の丸め誤差があるかもしれないが、ある程度はうまくいくと思っていただろう。

ありがとうございました。

答えて

0

widthとheightをuintと宣言しました。 1はintまたはuintです。 uintとuintを分割すると、uintが得られます。したがって、あなたのテクセルサイズは常に(0、0)になります。代わりに乗算幅と高さによって、テクセルの大きさで割るの

uint x = uv.x * width; 
uint y = uv.y * height; 
+0

だから、シンプル:)感謝。 –

関連する問題