2010-08-31 4 views
0

Я пытаюсь отобразить текстурированный квадратик в d3d и не использовать альфа-значения VERTICES квадрата, на который визуализируется текстура. Скорее, он использует альфа ТЕКСТУРА.Как заставить d3d использовать значения вершинной альфы?

Я хочу, чтобы d3d использовал альфа VERTICES многоугольника, на котором он был нанесен.

У меня есть идея, что имеет дело с SetTextureStageState, но я не могу найти его совсем еще ..

ответ

0

ОК, вот что я получил:

D3DTSS перечисления (содержащее значения по умолчанию для D3DTSS_ * настройки)

D3DTA перечисление

// where does the SRC color come from? 
// why, the currently bound texture of course! 
d3d->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); 
// Default: D3DTA_TEXTURE (anyway. So this setting is redundant.) 

БОЛЬШОЙ ВЫБОР ДАЛЬШЕ:

// let the alpha component be read from the 
// diffuse color of the vertex.. 
d3d->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE); 
// Default: D3DTA_TEXTURE (which would be "pull alpha from the texture") 

// because my vertex declaration is set up to send 1 color, and 
// D3DRS_DIFFUSEMATERIALSOURCE is set to D3DMCS_COLOR1, this means 
// to use the vertex alpha i specify. i think. 

Остальное не меняет ничего от значений по умолчанию, но его здесь, так что все, что можно увидеть:

// DEST where does the alpha value come from? also the 
// diffuse component 
d3d->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT); 
// Default: D3DTA_CURRENT. I believe this means "the destination will 
// be whatever the existing color in the framebuffer already is" 

// setting up as is default, 
d3d->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT); 
// Default: D3DTA_CURRENT. No change. 

Я думаю, что работает.

В дополнении к пониманию: this link содержит старый, но очень аккуратный инструмент под названием MFCTex:

MFCTex program

Таким образом, ее очень легко увидеть эффект того, что происходит, когда вы используете разный арг.

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

 Смежные вопросы

  • Нет связанных вопросов^_^