XNA - рендеринг в альфа-канал текстуры - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть текстура, которую я хочу изменить в своем альфа-канале во время выполнения.
Есть ли способ рисовать на альфа-канале текстуры?
Или, возможно, заменить канал на другой текстуре?
Спасибо,
SW.

1 Ответ

2 голосов
/ 05 ноября 2010

Хорошо, исходя из вашего комментария, вам следует использовать пиксельный шейдер.Ваше исходное изображение даже не нуждается в альфа-канале - пусть пиксельный шейдер применяет альфа-канал.

Фактически вам, вероятно, следует рассчитать значения для альфа-канала (т. Е. Запустить программу расчета жидкости) на графическом процессоре какну.

Ваш шейдер может выглядеть примерно так:

float4 main(float2 uv : TEXCOORD) : COLOR
{
    float4 c = tex2D(textureSampler, uv);
    c.A = /* calculate alpha value here */;
    return c;
}

Хорошее место для начала - образец XNA Sprite Effects .

Есть даже эффект, похожий на то, что вы делаете:
http://create.msdn.com/assets/cms/images/XNA_SpriteEffects_02_small.jpg

Эффект в образце читает со второй текстуры, чтобы получить значения для вычисления альфа-канала первой текстуры, когда онанарисован.

...