Войти
ПрограммированиеФорумГрафика

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

#0
0:44, 20 апр. 2005

Комментарий к Статье Прозрачные объекты.


#1
0:44, 20 апр. 2005

Статья отличная.
Но вот у меня только долго прозрачнасть не палучалась из-за маленького ньюанса.
В статье упущен следующий факт: флаги D3DRS_SRCBLEND и D3DRS_DESTBLEND
вот в этом месте месте:
> Для включения альфа блендинга, в Direct3D необходимо установить
> параметр D3DRS_ALPHABLENDENABLE в TRUE:
> m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );

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

Прошло более 1 года
#2
16:44, 4 авг. 2006

А влияет ли формат вершин на прозрачность?) Что-то делаю все как в статье, но у меня не получаются прозрачные текстуры(
Не преобразованный формат вершин.

Прошло более 1 года
#3
23:57, 27 фев. 2008

Зачем в семпле столько левых либ подключено?
Он у меня даже не думает компилиться.
Олегус верно подметил, что без срцбленда ничего не работает, хотя с ним он вобще черную текстуру рисует.

#4
2:52, 28 фев. 2008

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);
#5
9:12, 28 фев. 2008

ЭТО чудо! заработало!
Оказывается я свет вырубил нечаянно, забавно выглядел голый альфаканал без ргб текстуры.
Пасиба, теперь могу продолжить писать свою игрушку, хотя в идеале я собирался юзать в ней пиксельные шейдеры.
)

Прошло более 1 года
#6
12:13, 24 июня 2009

не подскажите, статья хорошая. но мне нужен был как раз другой способ(почему то в статье о нем не ласково отозвались) я про 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), как быть ребята? как избавиться от этого не до конца прозрачного квадратика?)

#7
12:19, 24 июня 2009

все разобрался) видимо проверка не проходила на буфер глубины.
т.е. если сначала рисовать чайник, то этого не до конца прозрачного квадратика не будет)

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

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