Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Прозрачные объекты. (Комментарии к статье)

Прозрачные объекты. (Комментарии к статье)

robotПостоялецwww20 апр. 20050:44#0
Комментарий к Статье Прозрачные объекты.
OLEG'usПостоялецwww20 апр. 20050:44#1
Статья отличная.
Но вот у меня только долго прозрачнасть не палучалась из-за маленького ньюанса.
В статье упущен следующий факт: флаги D3DRS_SRCBLEND и D3DRS_DESTBLEND
вот в этом месте месте:
> Для включения альфа блендинга, в Direct3D необходимо установить
> параметр D3DRS_ALPHABLENDENABLE в TRUE:
> m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );

Не знаю как в DX8, а у меня в DX9 без этого ничего не работало.
Так что прошу данный момент рассмотреть и по возможности
включить в статью.

nixПостоялецwww4 авг. 200616:44#2
А влияет ли формат вершин на прозрачность?) Что-то делаю все как в статье, но у меня не получаются прозрачные текстуры(
Не преобразованный формат вершин.
SpetzНовичокwww27 фев. 200823:57#3
Зачем в семпле столько левых либ подключено?
Он у меня даже не думает компилиться.
Олегус верно подметил, что без срцбленда ничего не работает, хотя с ним он вобще черную текстуру рисует.
keroseneПостоялецwww28 фев. 20082:52#4
nix
g_lpD3DD9->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
g_lpD3DD9->SetRenderState(D3DRS_COLORVERTEX,TRUE);
g_lpD3DD9->SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE,D3DMCS_COLOR1);
g_lpD3DD9->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
g_lpD3DD9->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);

g_lpD3DD9->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_lpD3DD9->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);  
g_lpD3DD9->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
g_lpD3DD9->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
g_lpD3DD9->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
g_lpD3DD9->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
SpetzНовичокwww28 фев. 20089:12#5
ЭТО чудо! заработало!
Оказывается я свет вырубил нечаянно, забавно выглядел голый альфаканал без ргб текстуры.
Пасиба, теперь могу продолжить писать свою игрушку, хотя в идеале я собирался юзать в ней пиксельные шейдеры.
)
nixПостоялецwww24 июня 200912:13#6
не подскажите, статья хорошая. но мне нужен был как раз другой способ(почему то в статье о нем не ласково отозвались) я про ColorKey. Загрузил я текстуру D3DXCreateTextureFromFileEx наложил на примитив(квадрат), формат вершин с rhw(т.е. преобразованная вершина для 2д координат). так вот запускаю и что происходит, квадратик и правда вырезал весь ColorKey, НО если я еще рисую квадрат в rhw то на нем текстура прозрачна, но если например стандартный чайник D3DXCreateTeapot, то при наведении на него эта текстура(делаю курсор мыши) прозрачна, но то место что прозрачно закрашивается цветом которым я чищу 
Device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(32,87,202), 1.0f, 0); т.е. D3DCOLOR_XRGB(32,87,202), как быть ребята? как избавиться от этого не до конца прозрачного квадратика?)
nixПостоялецwww24 июня 200912:19#7
все разобрался) видимо проверка не проходила на буфер глубины.
т.е. если сначала рисовать чайник, то этого не до конца прозрачного квадратика не будет)

/ Форум / Программирование игр / Графика

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр