BltFx + lRotationAngle

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

Модератор: Mikle

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

BltFx + lRotationAngle

Сообщение Amed » 03.12.2003 (Ср) 19:22

Здравствуйте! Вот я тут озадачился таким вопросом: как в DirectDraw blitt'ить спрайты, повёрнутые на некоторый угол?
Делается это, кажется с помощью ddsBack.BltFx(rect1, ddsPic, rect2, flags, sBltFx)
И величина угла задаётся именно в BltFx... (lRotationAngle вроде бы)... Но такая функция возвращает ошибку -2005532382, а не 0...

Может быть, кто-нибудь из мастеров DirectX/DirectDraw проведёт разъяснительную работу с примерами? :) С правильными flags, sBltFx... К слову, больше мне ничего не надо, обычный BltFast и BltFx без поворота (только со сжатием и отражениями) делает отличччно :P

P.S. В Яндексе, Гугле, msdn.microsoft.com уже искал, примеров что-то нигде на нашёл, а DX sdk у меня нет, прошу не пинать ногами и не отправлять "на рынок" книжку покупать :wink:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.12.2003 (Ср) 20:32

Не извращайся и используй direct3D для своих низменных целей...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.12.2003 (Ср) 20:39

Вот нашел свой старый 2D движок с совместным использованием dd & d3d... Там и освещение в реальном времени и поворот спрайтов...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.12.2003 (Ср) 21:12

d3drm писал(а):Не извращайся и используй direct3D для своих низменных целей...


a) я не извращаюсь... НИКОГДА! :evil:
б) низменные цели... я промолчу, т.к. не хочу получить бан за использование ненормативной лексики...

Теперь по сути:
Да, идея понятна, но меня не устраивает, в основном, быстродействие (у меня пример работает на ~25 fps, а это минимальная задача, в проекте спрайтов будет много больше).
И всё-таки, это не ответ на мой вопрос :?. Ведь, кажется, это всё можно решить гораздо проще с правильным использованием BltFx...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.12.2003 (Ср) 22:01

Ладно, ты не кипятись, а то бородавка на носу вскочит...

Движок старый, там много недочетов! Все дело в том, что для каждого спрайта используется отдельный DirectDrawSurface, что забивает память и тормозит работу. Кроме этого, там много чего еще можно подправить, но не в этом дело. Я хотел лишь показать как можно использовать d3d для возвышенных задач, а ты там сам думай, как свои мелкие програмки ляпать...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.12.2003 (Ср) 22:09

d3drm писал(а):Ладно, ты не кипятись, а то бородавка на носу вскочит...


Да ладно, я не кипячусь... Меня просто немного раздражают малоинформативные посты :roll:, к тому же принизительно-опускательные :wink:

...а ты там сам думай, как свои мелкие програмки ляпать...


Да-да, вроже этого :wink:

А думать - так это я уже все мозги продумал - и так, и сяк вертел я эти ужасные BltFxConstants :twisted:
Да и свои "мелкие программки" я не ляпаю, а пишу... :evil:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.12.2003 (Ср) 23:16

У меня в книжке где-то было написано, найти не могу... Но смысл в том, что поворотами в DD никто не пользуется, потому что это очень ресурсоемкий процесс. Можно даже попиксельно перевернуть картинку, разница будет невелика. Поэтому я и предложил d3d использовать. В сочетании с DD можно добиться хороших результатов. К тому же, можно самому придумать кучу способов экономии ресурсов, в зависимости от того, какую програмуську ты ПИШЕШЬ :mrgreen:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.12.2003 (Ср) 23:22

:(

Видать, придётся делать КУЧУ спрайтов с разным углом поворота... Но, кстати, я на vb.kiev.ua нашёл программу, быстро поворачивающую картинку в PictureBox на заданный угол (картинка ~100x100 поворачивается ~30 мс). Может, выгоднее перед стартом программы рендерить из исходного файла кучу повёрнутых, сохранять их в файл и подгружать их... =)

Кажись, такой вариант очень даже неплох...

Ну вот, спасибо всем, участвующим в дискуссии :mrgreen:

Я пошёл ПИСАТЬ программуську :lol:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.12.2003 (Ср) 23:33

А лучше быстренько написать свою программу для загрузки модели и получения спрайтов под любым углом 8) Я себе сделал, теперь перегоняю модельки из второй кваки в любую 2D игру :)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 09.12.2003 (Вт) 21:46

Пришёл к выводу, что выгоднее всего будет перед запуском программы отрендеривать ~20-30 картинок с разными углами во временный файл, из которого и грузить в оффскринный буфер...

Вроду бы, вся процедура отрисовки 30-40 юнитов будет занимать около 30 секунд на моём компе (Celeron 1200/192)

P.S. у меня нет видеокарты как таковой, она встроена в материнскую плату, в bios'е можно выделить до 32 мб на видеопамять (из RAM)... Даже counter-strike без тормозов работает только в окошке 400х300 в Direct3D, при этом не больше 25-30 fps... :roll: :cry:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 10.12.2003 (Ср) 20:57

Да, это ты неплохо придумал... И память на жестком диске меньше расходуется по сравнению с хранением спрайтов... Круто!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.12.2003 (Ср) 22:01

Да, наверное... Пока у меня спрайт 64x64 занимает 13 кб (24 bit) или 6 кб (индексированный)... Т.е., один bmp с юнитом занимал бы 325 (150) кб, а все 30-40 юнитов - около 11 (5) Мб... Что есть довольно много, гораздо проще рендерить "на лету"... Сейчас пойду проверять время и тестировать новый способ...

Кстати, если перейти на Direct3D и юзать модельки кораблей, то во сколько примерно раз (сотен раз :)) это будет медленнее, чем спрайты? Предполагаю делать низкополигонные модельки, лишь бы на корабли похожи были :D. Скажем, на GeForce2 будет выдавать > 40 fps со, скажем, 40 модельками на экране?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.12.2003 (Чт) 5:34

Вот что получилось:

Прошу всех скачать программу и оставить запись в топике с указанием:
а) Вашей конфигурации (Процессор / Память / Видео)
б) Результатов теста:
в) Какое время загрузки программы будет устраивать широкие массы 8)

30 гр. / 15 гр. / 30 гр. + АА / 15 гр. + АА (всё в секундах, время появляется в заголовке программы после выполнения...)

* АА - АнтиАлиас, сглаживание...
** Программа рендерит 40 юнитов, будьте терпеливы...

Вот мои результаты:
а) Celeron 1200 / 192 mb / 16 mb
б) 3.15 / 6.03 / 4.57 / 8.3
в) 5 секунд

Проанализирую Ваши сообщения и решу, как рендерить :wink:.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 11.12.2003 (Чт) 22:04

На счет кораблей. Даже если делать многополигонные модели, можно добиться хороших fps если делать проверку на видимость, и (или) на расстояние. Тогда в кадре будут находится только нужные корабли и fps взлетит до небес.

З.Ы. А зачем в программульках корабли? :?:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 12.12.2003 (Пт) 13:01

Во! :) Пишу результаты:
a) Athlon1500XP / 256 mb / Gf2Mx400X64mbX128bit
b)2,2954 / 1,2756 / 3,4879 / 1.9274
c)я барл так : 15, 30 ,15+AA, 30+AA :wink:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.12.2003 (Сб) 21:39

2Vovik: спасибо, меня такие результаты очень даже устраивают :wink:
2d3drm: а как же? Проверка видимости обязательна :) Иначе было бы компу плохо, у меня на каждый кораблик по 3-4 спрайта будет... :roll:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 13.12.2003 (Сб) 21:51

Если ты при загрузке будешь делать, то, я думаю, много времени это не займёт! :lol:


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

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

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

    TopList