Окрашивание текстур без диффузного буфера вершин - PullRequest
0 голосов
/ 24 мая 2011

В настоящее время я работаю над двумерным приложением Direct3D и пытаюсь выяснить, как правильно добавить оттенок и альфа-эффект к различным текстурам.

Раньше это работало, но я делал это так:

  1. Блокировка буфера вершин.
  2. Изменение диффузного цвета на каждой из вершин.
  3. Разблокировка буфера вершин.

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

Я изучал рассеянное освещение, но не уверен, позволяет ли это добавить непрозрачность текстурам. Если я добавлю в текстуру рассеянный свет с непрозрачностью 50%, будет ли текстура иметь непрозрачность 50%?

Любое руководство приветствуется, учебники и примеры кода более того:),
Jengerer

1 Ответ

1 голос
/ 24 мая 2011

Я так не думаю - согласно Документам MSDN по освещению D3D :

Обратите внимание, что хотя Direct3D использует значения RGBA для источников света, компонент альфа-цвета не используется.

Написание шейдера для настройки цвета для каждой вершины звучит так, как вам нужно, который работает в графическом процессоре и имеет небольшие накладные расходы по сравнению с модификацией каждой вершины в центральном процессоре.В Интернете есть множество учебных пособий по D3D, например

http://gpwiki.org/index.php/DirectX:Direct3D:Tutorials:Shaders_Introduction

http://www.toymaker.info/Games/html/shaders.html

...