ОК, вот что я получил:
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](https://i.stack.imgur.com/hCYdj.png)
Таким образом, ее очень легко увидеть эффект того, что происходит, когда вы используете разный арг.
Я понимаю, что это не классный способ сделать это больше, и действительно крутой способ был на некоторое время написать собственные вершинные и пиксельные шейдеры.