|
18.09.2009, 21:29
|
#1
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
DirectX фильтр Текстурны
Всем привет!
помните в блитце были команды
TextureFilter tex,value
и при загрузки текстуры loadTexture(file,VALUE)
в дх при загрузки текстуры значение пишу сюда:
D3DXCreateTextureFromFileInMemoryEx
( pD3DDevice, data, _size,
D3DX_DEFAULT, D3DX_DEFAULT,
bMipmap ? 0:1,
0,
fmt2,
D3DPOOL_MANAGED,
iFilter,
D3DX_DEFAULT,
0,
&info, NULL,
&pTex )
вот немогу подобрать значения для MAsked в блитце ,
ктонить знает какие там?
|
(Offline)
|
|
18.09.2009, 22:16
|
#2
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: DirectX фильтр Текстурны
Вроде 4 с конца (уточняй в доке по СДК, там оно называется прозрачный цвет или как-тот так), в блитзе юзается значение 0xff000000 (точнее там вроде берется промежуток небольшой, примерно 0xff000000 - 0xff050505, но это же руками такое делать).
Сразу по флагу 2 - в блитзе при отсутствии альфы в файле делается перебор всех пикселов и каждому ставится альфа как среднее арифметическое цветовых каналов. Остальное вроде реализуется вполне
D3DXCreateTextureFromFileInMemoryEx() и т.п.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 18:43
|
#3
|
Мастер
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений (для 631 пользователей)
|
Ответ: DirectX фильтр Текстурны
HRESULT D3DXCreateTextureFromFileEx(
LPDIRECT3DDEVICE9 pDevice,
LPCTSTR pSrcFile,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
DWORD Filter,
DWORD MipFilter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO * pSrcInfo,
PALETTEENTRY * pPalette,
LPDIRECT3DTEXTURE9 * ppTexture
Если я правильно понимаю нужен цветовой ключ вместо которого должен быть прозрачный цвет. Он задается в параметре ColorKey в кодировке ARGB. Первый байт слева задает прозрачность. Остальные три - цвет.
И незабудь включить альфа-блендинг
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 18:48
|
#4
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: DirectX фильтр Текстурны
Уважаемый, для масок не нужен альфаблендинг. Ибо тогда теряется весь смысл масок (уход от необходимости упорядоченного вывода геометрии от дальнего к ближнему за счет более грубой прозрачности (прозрачно/не прозрачно), в общем случае вполне подойдет и альфабленд (при значениях альфы только 0 и 1), но он приведет к большей нагрузке при расчете результируещего цвета пиксела). Нужен альфатест.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 18:59
|
#5
|
Мастер
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений (для 631 пользователей)
|
Ответ: DirectX фильтр Текстурны
Knightmare - я пробовал с отключенным альфабленденгом - маска тогда вообще неработает.
|
(Offline)
|
|
20.09.2009, 19:01
|
#6
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: DirectX фильтр Текстурны
Фигово пробовал. Выключаешь альфабленд, включаешь альфатест.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 19:54
|
#7
|
Мастер
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений (для 631 пользователей)
|
Ответ: DirectX фильтр Текстурны
Да ты прав, есть такое. Просто никогда не пробовал раньше...
Значит вот альфатест:
// Выключаем альфаблендинг
pDirect3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
// Включаем альфа тест
pDirect3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, true);
// Число с каким сравнивать пиксели
pDirect3DDevice->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
// Метод работы альфа теста (рисуются менее прозрачные и эквивалентные пиксели данному)
pDirect3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 21:11
|
#8
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Ответ: DirectX фильтр Текстурны
Knightmare
Спасибо, я так теперь и сделал, перебрал текстуру
и все работает) и даже этот фильтр нигде не писал)
просто на микросовте было написан фильтр, я там значение потыкал, вроде что то делает и подумал что это оно и есть)
Еще раз спасибо!
И самоделкину тоже) - тоже коечто подчеркнул из постов!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:32.
|