DirectX эквивалент glBlendFunc (............) - PullRequest
3 голосов
/ 15 марта 2012

Я создал систему частиц в OpenGl, которая прекрасно работает. Когда я хочу получить эффект горения огня, луча или чего-то еще (когда система «светится» и объединяет все цвета вместе), я использую этот метод с OpenGL.

glBlendFunc(GL_SRC_ALPHA,GL_SRC_ALPHA) 
glBlendFunc(GL_DST_ALPHA,GL_ONE)

Я сейчас пытаюсь сделать то же самое, используя Direct3D

Вот что я пробовал:

graphicsDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
graphicsDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
graphicsDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

но это совершенно не влияет на внешний вид моей игры! У кого-нибудь есть подсказка, в чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2012

В итоге я просто переключился на OpenGL.Но спасибо за помощь, ребята: D

0 голосов
/ 15 марта 2012

Попробуйте:

graphicsDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
graphicsDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
graphicsDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
...