2013-07-22 263 views
0

我已經找了這個,我很確定它可以完成。Directx 11紋理映射

有誰知道我怎麼能阻止紋理被拉伸超過一個方面?

我記得在某些遊戲設計中,您可以選擇將圖像拉伸到對象上還是重複運行。

編輯:好的,所以我已經使用像素座標,問題仍然存在。頂點很好。我試圖做的是加載一個位圖,並保持大小相同,無論分辨率是什麼,或圖像的大小。我希望圖像只能使用20x20的物理像素。

我希望這是有道理的,因爲我不認爲我以前的解釋。

Texture2D Texture; 

SamplerState SampleType 
{ 
    Filter = TEXT_1BIT; 
// AddressU = Clamp; 
// AddressV = Clamp; 
}; 

struct Vertex 
{ 
    float4 position : POSITION; 
    float2 tex : TEXCOORD0; 
}; 

struct Pixel 
{ 
    float4 position : SV_POSITION; 
    float2 tex : TEXCOORD0; 
}; 

Pixel FontVertexShader(Vertex input) 
{ 
    return input; 
} 

float4 FPS(Pixel input) : SV_Target 
{ 
    return Texture.Sample(SampleType, input.tex); 
} 

...

+0

拉伸取決於您在Pixel Shader採樣中使用的紋理座標。你可以給你的像素着色器的代碼? –

+0

紋理地址模式(重複,鏡像,換行,鉗制)取決於您爲紋理設置的[D3D11_TEXTURE_ADDRESS_MODE](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ff476256.aspx)採樣器(使用參數[D3D11_SAMPLER_DESC](http://msdn.microsoft.com/en-us/library/windows/desktop/ff476207.aspx))創建。 –

+0

看起來很可怕,所以我把它作爲下面的答案發布。紋理顯示正常,直到窗口調整大小是我發現的。我知道我正在將貼圖映射到2x2塊。 (-1.0f到1.0f),所以它們在窗口被調整大小。理想情況下,我希望我印刷的紋理始終具有相同的尺寸,除非我希望它們改變。我只是不知道該怎麼做,或者如果可能的話。 – user2600628

回答

0

答案是HWND = CreateWindow的(...);

使用WS_POPUP意味着我刪除了邊框,並且我的紋理能夠正確映射它自己。

您需要使用GetClientRect();

謝謝大家的幫助。 :)