2012-03-14 10 views
3

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

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); 

, но это не имеет абсолютно никакого эффекта на внешний вид моего игра! Кто-нибудь знает, в чем проблема?

+0

Не совсем понятно, какой эффект вы пытаетесь получить. Не могли бы вы объяснить это более подробно на примере двух (src/dst) цветов ARGB? – real4x

+0

Я пытаюсь получить ЛЮБОЙ эффект вообще. И точно так же, как мой вопрос говорит, что я ищу эквивалентные вызовы directX, которые будут иметь тот же эффект, что и вышеупомянутые вызовы glBlenFunc() –

ответ

0

Try:

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

Я пробовал код, и эффекта все еще не было. Я думаю, что что-то происходит в другом месте. Возможно, способ, которым было настроено устройство, неверен –

0

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

+1

Хорошо для вас теперь вы можете быть кросс-платформой. – awiebe

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

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