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);
}
...
拉伸取决于您在Pixel Shader采样中使用的纹理坐标。你可以给你的像素着色器的代码? –
纹理地址模式(重复,镜像,换行,钳制)取决于您为纹理设置的[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))创建。 –
看起来很可怕,所以我把它作为下面的答案发布。纹理显示正常,直到窗口调整大小是我发现的。我知道我正在将贴图映射到2x2块。 (-1.0f到1.0f),所以它们在窗口被调整大小。理想情况下,我希望我印刷的纹理始终具有相同的尺寸,除非我希望它们改变。我只是不知道该怎么做,或者如果可能的话。 – user2600628