2013-03-28 14 views
1

В настоящее время я пытаюсь применить изображение текстуры к орфографической плоскости, чтобы его можно было использовать как своего рода «U.I. украшение'.Как применить текстуру к ортографической плоскости с помощью шейдеров DirectX11

Самолет состоит из двух три в формате D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP. Когда я пытаюсь отобразить планшет с помощью шейдера, он просто выглядит белым (или невидимым, если у меня состояние смешивания установлено на true). Я считаю, что это потому, что я только беру выборку из четырех углов текстуры в орфографическом плане, поскольку я только беру выборку в вершинном шейдере.

Это текущий код в моих шейдерах:

void VSMain(const VSInput input, out PSInput output) { 
    output.pos = input.pos; 
    output.pos = mul(output.pos, g_WVP); 

    float2 tex_pos; 
    float4 Tex; 
    tex_pos.x = (input.pos.x + 512)/1024; 
    tex_pos.y = (-input.pos.z + 512)/1024; 

    Tex = g_materialMap.SampleLevel(g_sampler, tex_pos, 0); 

    output.colour = Tex; 
} 

void PSMain(const PSInput input, out PSOutput output) { 
    output.colour = input.colour; 
} 

Когда я применить этот шейдер к высотам, что я в настоящее время рендеринга в сцене, он работает должным образом, однако он не работает должным образом на ортографическая плоскость.

Может ли кто-нибудь помочь мне правильно применить эту текстуру к орфографической плоскости? (При необходимости я могу предоставить скриншоты текущей сцены)

+0

Можете ли вы предоставить ваш создание вершин и ваша ничья код? Скриншот тоже будет интересным :) – Gnietschow

ответ

1

Я сам обнаружил и исправил проблему.

Сэмплирование В пиксельном шейдере необходимо выполнить выборку, чтобы он правильно окрашивался, но я пропустил добавление текстуры в видимость пиксельного шейдера.

Исправление выглядит следующим образом:

переключатель линия

Tex = g_materialMap.SampleLevel(g_sampler, tex_pos, 0); 

в

output.tex = tex_pos; 

Затем в пиксельный шейдер просто положить

float4 Tex = g_materialMap.Sample(g_sampler, input.tex); 
output.colour = Tex; 
Смежные вопросы