Глюконат в DX, помогите разобраться!

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 07.07.2004 (Ср) 9:58

Можно использовать вертексную прозрачность. Для вертекс-буферов альфа задается в Diffuse, для Mesh-ей в материале. Вот примерчик с TextureMapping.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 07.07.2004 (Ср) 23:09

Попутно ещё пара вопросов:
В примере использован формат PNG, какое преимущество он дает?

Майкл, имеет ли смысл конвертировать Х-формат в самостоятельный и потом рендерить сцену на уровне примитивов. Как считаешь, будет ли потеря (выигрыш) в производительности по сравнению с Х-вариантом?

Немного о фильтрах.
Назначение MIN, MIP и MAG фильтров в целом понял, только одна деталь -
не понятно различие между D3DTEXF_LINEAR и D3DTEXF_ANISOTROPIC. Последний отнимает 2-3% ФПС, а на экране никакой разницы не видно.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 08.07.2004 (Чт) 16:27

Формат PNG дает сжатое наподобие JPG сжатие текстуры с альфа каналом.
X файл кроме информации о вертексах, индексах, текстурах и материалах, содержит еще FVF. То есть, например, если нужно отобразить модель в 2D (XYZRHW), нужно конвертировать сам меш, иначе он так и будет отображаться в 3D. По скорости большой разницы между мешем и индексным буфером большой нет. Другое дело обычный, не индексный вертекс буфер - он побыстрее, если нормально оптимизирован.
Чтобы заработало D3DTEXF_ANISOTROPIC, насколько понимаю, нужно создавать текстуру в соответствующем формате и разрешить анизотропию в дровах. Это сильно просадит быстродействие, я пока не пользовался.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 09.07.2004 (Пт) 1:46

Mikle писал(а):Для вертекс-буферов альфа задается в Diffuse, для Mesh-ей в материале.

Применяю
SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
Если меш без тектуры, то вроде все в порядке, степень прозачности легко меняется.
Но когда цепляю ВМР прозрачность напрочь исчезает. Путем манипуляций с D3DBLEND отчасти удаётся её восстановить, но при этом не возможно изменить глубину, и эффект не совсем естественный. В ДХ7 с этим проблем не было!

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 09.07.2004 (Пт) 9:16

SetTextureStageState 0, AlphaOp, SelectArg1
SetTextureStageState 0, AlphaArg1, Diffuse

Что-то вроде - под рукой нет бейсика.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 09.07.2004 (Пт) 22:24

Майкл, очередной раз СПАСИБО! Работает. Для полного счастья осталось поэкспериментировать с параметрами.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 15.11.2004 (Пн) 4:20

Новый вопросик:

есть
Material1 As D3DMATERIAL8, Material2 As D3DMATERIAL8

Как можно быстро определить еквивалентность их
содержимого не перебирая внутренностей?

If Material1 = Material2 then ...

не проходит

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.11.2004 (Пн) 6:57

Есть RtlCompareMemory и RtlEqualMemory. Правда, только на NT-системах...

Написать сравнитель памяти на VB? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 15.11.2004 (Пн) 16:49

О "сравнителе" я думал, вариант вобщем неплохой, может еще что-нить есть в Win or DX API?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.11.2004 (Пн) 16:55

Наверняка есть в сишных рантаймах.
Наверняка недокументированно есть на всех виндах :)
В DX нету, как я поискал...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Пред.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

    TopList  
cron