Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 18.09.2009, 21:29   #1
Horror
Бывалый
 
Регистрация: 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
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX фильтр Текстурны

Вроде 4 с конца (уточняй в доке по СДК, там оно называется прозрачный цвет или как-тот так), в блитзе юзается значение 0xff000000 (точнее там вроде берется промежуток небольшой, примерно 0xff000000 - 0xff050505, но это же руками такое делать).
Сразу по флагу 2 - в блитзе при отсутствии альфы в файле делается перебор всех пикселов и каждому ставится альфа как среднее арифметическое цветовых каналов. Остальное вроде реализуется вполне
D3DXCreateTextureFromFileInMemoryEx() и т.п.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (19.09.2009)
Старый 20.09.2009, 18:43   #3
Samodelkin
Мастер
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (20.09.2009)
Старый 20.09.2009, 18:48   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX фильтр Текстурны

Уважаемый, для масок не нужен альфаблендинг. Ибо тогда теряется весь смысл масок (уход от необходимости упорядоченного вывода геометрии от дальнего к ближнему за счет более грубой прозрачности (прозрачно/не прозрачно), в общем случае вполне подойдет и альфабленд (при значениях альфы только 0 и 1), но он приведет к большей нагрузке при расчете результируещего цвета пиксела). Нужен альфатест.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (20.09.2009)
Старый 20.09.2009, 18:59   #5
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: DirectX фильтр Текстурны

Knightmare - я пробовал с отключенным альфабленденгом - маска тогда вообще неработает.
(Offline)
 
Ответить с цитированием
Старый 20.09.2009, 19:01   #6
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX фильтр Текстурны

Фигово пробовал. Выключаешь альфабленд, включаешь альфатест.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (20.09.2009)
Старый 20.09.2009, 19:54   #7
Samodelkin
Мастер
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (20.09.2009)
Старый 20.09.2009, 21:11   #8
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Ответ: DirectX фильтр Текстурны

Knightmare
Спасибо, я так теперь и сделал, перебрал текстуру
и все работает) и даже этот фильтр нигде не писал)

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

Еще раз спасибо!
И самоделкину тоже) - тоже коечто подчеркнул из постов!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DirectX 9 nillsoft Библиотеки 15 17.01.2014 17:02
Учу С++ & DirectX moka C++ 27 04.01.2010 01:27
Как сделать инфракрасный фильтр? Sfonsper 3D-программирование 28 12.02.2009 19:03
Directx 8 pax C++ 6 10.01.2008 23:27
Есть ли такой фильтр в 3DS Max? Round 3D Моделирование 5 26.01.2007 00:05


Часовой пояс GMT +4, время: 10:54.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com