Я искал это, и я уверен, что это можно сделать.Directx 11 Отображение текстур
Кто-нибудь знает, как я могу остановить текстуру, растянутую над негабаритным гранью?
Я помню, в некоторых игровых проектах у вас была возможность либо растянуть изображение по объекту, либо запустить повтор.
EDIT: Хорошо, поэтому я использовал пиксельные координаты, и проблема все еще остается. Вершины точны. То, что я пытаюсь сделать, это загрузить растровое изображение и сохранить размер одинаковым независимо от того, что такое разрешение, или размер изображения. Я хочу, чтобы изображение использовало только физические пиксели 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);
}
...
Растяжка зависит от координаты текстуры, которую вы используете в выборке пиксельного шейдера. Не могли бы вы дать код вашего пиксельного шейдера? –
Режим адреса текстуры (повторение, зеркалирование, обертывание, зажим) зависит от [D3D11_TEXTURE_ADDRESS_MODE] (http://msdn.microsoft.com/en-us/library/windows/desktop/ff476256.aspx), который вы установили для текстуры Sampler (созданный с параметром [D3D11_SAMPLER_DESC] (http://msdn.microsoft.com/en-us/library/windows/desktop/ff476207.aspx)). –
Это выглядит ужасно, поэтому я разместил его как ответ ниже. Текстура отображается штрафом до тех пор, пока размер окна не изменится, это то, что я нашел. Я знаю, что сопоставляю текстуры с блоком 2x2. (От -1.0f до 1.0f), и поэтому они изменяются при изменении окна. В идеале я хочу, чтобы текстуры, которые я печатаю, всегда были одного размера, если я не хочу, чтобы они менялись. Я просто не знаю, как это сделать или если это возможно. – user2600628