TextureFactor+AlphaBlend=глюк

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

TextureFactor+AlphaBlend=глюк

Сообщение Debugger » 20.10.2008 (Пн) 16:00

TSS задаю так:
Код: Выделить всё
    D3DDevice.SetRenderState D3DRS_CULLMODE, D3DCULL_CCW
    D3DDevice.SetRenderState D3DRS_ZWRITEENABLE, 0
    D3DDevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1

  D3DDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
  D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_ONE
  D3DDevice.SetRenderState D3DRS_BLENDOP, D3DBLENDOP_ADD
 
    D3DDevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_MODULATE
    D3DDevice.SetTextureStageState 0, D3DTSS_RESULTARG, D3DTA_TEMP
    D3DDevice.SetTextureStageState 1, D3DTSS_COLOROP, D3DTOP_MODULATE
    D3DDevice.SetTextureStageState 1, D3DTSS_COLORARG1, D3DTA_TEMP
    D3DDevice.SetTextureStageState 1, D3DTSS_COLORARG2, D3DTA_TFACTOR
   
    D3DDevice.SetTextureStageState 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
    D3DDevice.SetTextureStageState 1, D3DTSS_ALPHAARG1, D3DTA_TEMP
 
    D3DDevice.SetRenderState D3DRS_TEXTUREFACTOR, &HFFFFFFFF

Однако, на скриншоте видно, что звезды просвечивают сквозь корабль (а он сам - полупрозрачный). Задник рисую через спрайт, корабль - через меш.
Еще вопросы
1) Как в DirectX сделать партикли? Когда-то видел топик, даже с примером. Сейчас ни линк не могу вспомнить, ни найти через поиск
2) Есть DirectX SDK для VB? На http://www.microsoft.ru искал, но нашел только для C++
А, DirectX 8й меня интересует.
У вас нет доступа для просмотра вложений в этом сообщении.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: TextureFactor+AlphaBlend=глюк

Сообщение djalex777 » 21.10.2008 (Вт) 9:12

Debugger писал(а):Однако, на скриншоте видно, что звезды просвечивают сквозь корабль (а он сам - полупрозрачный). Задник рисую через спрайт, корабль - через меш..

Эээ.. Немного не понятно, звезды видно через полупрозрачный корабль. А разве этого не должно быть? Переформулируй.
1) Как в DirectX сделать партикли? Когда-то видел топик, даже с примером. Сейчас ни линк не могу вспомнить, ни найти через поиск

С помощью POINT_SPRITE
2) Есть DirectX SDK для VB? На http://www.microsoft.ru искал, но нашел только для C++

Есть. Ищи по строке DX81SDK_FULL в гугле

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: TextureFactor+AlphaBlend=глюк

Сообщение Debugger » 21.10.2008 (Вт) 15:21

А разве этого не должно быть

Если использовать текстуру с полупрозрачными слоями, даже сквозь непрозрачный слой все равно будет видны задники.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: TextureFactor+AlphaBlend=глюк

Сообщение djalex777 » 21.10.2008 (Вт) 23:11

Возможно причина в D3DBLEND_ONE.
Попробуй:
Код: Выделить всё
d3ddevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
d3ddevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: TextureFactor+AlphaBlend=глюк

Сообщение Debugger » 22.10.2008 (Ср) 18:13

Спасибо! Так долго ковырял эту неприятность, а все оказалось так просто :D


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList