forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   DirectX фильтр Текстурны (http://forum.boolean.name/showthread.php?t=9200)

Horror 18.09.2009 21:29

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 в блитце ,
ктонить знает какие там?

Knightmare 18.09.2009 22:16

Ответ: DirectX фильтр Текстурны
 
Вроде 4 с конца (уточняй в доке по СДК, там оно называется прозрачный цвет или как-тот так), в блитзе юзается значение 0xff000000 (точнее там вроде берется промежуток небольшой, примерно 0xff000000 - 0xff050505, но это же руками такое делать).
Сразу по флагу 2 - в блитзе при отсутствии альфы в файле делается перебор всех пикселов и каждому ставится альфа как среднее арифметическое цветовых каналов. Остальное вроде реализуется вполне
D3DXCreateTextureFromFileInMemoryEx() и т.п.

Samodelkin 20.09.2009 18:43

Ответ: 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);


Knightmare 20.09.2009 18:48

Ответ: DirectX фильтр Текстурны
 
Уважаемый, для масок не нужен альфаблендинг. Ибо тогда теряется весь смысл масок (уход от необходимости упорядоченного вывода геометрии от дальнего к ближнему за счет более грубой прозрачности (прозрачно/не прозрачно), в общем случае вполне подойдет и альфабленд (при значениях альфы только 0 и 1), но он приведет к большей нагрузке при расчете результируещего цвета пиксела). Нужен альфатест.

Samodelkin 20.09.2009 18:59

Ответ: DirectX фильтр Текстурны
 
Knightmare - я пробовал с отключенным альфабленденгом - маска тогда вообще неработает.

Knightmare 20.09.2009 19:01

Ответ: DirectX фильтр Текстурны
 
Фигово пробовал. Выключаешь альфабленд, включаешь альфатест.

Samodelkin 20.09.2009 19:54

Ответ: DirectX фильтр Текстурны
 
Да ты прав, есть такое. Просто никогда не пробовал раньше...

Значит вот альфатест:
Код:

// Выключаем альфаблендинг
pDirect3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
// Включаем альфа тест
pDirect3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, true);
// Число с каким сравнивать пиксели
pDirect3DDevice->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
// Метод работы альфа теста (рисуются менее прозрачные и эквивалентные пиксели данному)
pDirect3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);


Horror 20.09.2009 21:11

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

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

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot