|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.11.2007, 13:47 | #11 |
.NET-чик
Форумчанин
Регистрация: 24.03.2007
Сообщений: 569
|
Kostia большое спасибо за объяснение Если у вас будет свободное время, можете написать статью по этой теме и разместить здесь ProgrammersInfo.
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок |
23.11.2007, 22:26 | #12 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Ох ты, сложновато..
Мде, лес густой просто , ...подозревал, что с DirectX намучиешься со всеми настройками, но чтобы на столько. Благо модуль упрощает задачу. Тут попробовал переключить в режим 1024х768x32bit, моргание по всему экрану, скорее всего в функции function WindowProc(wnd: HWND; Msg: Integer; wParam: wParam; lParam: lParam): Lresult; stdcall; что-то непрописано, в часности вот это пустует:
WM_PAINT: begin end; ...очевидно туда нужно то же, что в примере InitDirectDraw? это помогает: ClearSurface(backsurf, 0); primsurf.Flip(nil, DDFLIP_WAIT); exit;
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
24.11.2007, 11:50 | #13 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Правила рисования на поверхности
ClearSurface(backsurf, 0); // Эта процедура чистит задний буфер
primsurf.Flip(nil, DDFLIP_WAIT); // а эта выводит его на экран exit; Процедуру очистки можно ставить либо в самом начале цикла(основной игровой цикл) либо после primsurf.Flip(nil, DDFLIP_WAIT);, а между ними нужно рисовать. Почему так? Всё просто. Вы построили кадр, вывели его, затем вам нужно построить новый кадр, а для этого нужно удалить всё что было нарисовано до этого в буфере, а делается это его закраской (ClearSurface(backsurf, 0); или полной перерисовкой буфера). Расчеты лучше всего проводить до рисования. Последний раз редактировалось Kostia; 24.11.2007 в 11:59. |
24.11.2007, 12:30 | #14 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Как сделать анимацию!
Все предельно просто!
В процедуре bltfast 4-й парамет определяет облать выводимой картинки. А в процедуре blt это 3-й параметр. Пример: |
26.11.2007, 17:07 | #16 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Sound
Держи! Тут доработанный модуль DDfunc и пример воспроизведения звука.
|
22.03.2008, 16:10 | #17 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Если появятся вопросы по использованию DirectDraw, то задавайте их в этой теме.
загрузка и способ вывода картинок http://develprog.ucoz.ru/_fr/0/Open_...aw_Picture.rar (73kb) способ добраться до отдельных точек и изменить их цвет http://develprog.ucoz.ru/_fr/0/addition.rar (14kb) модуль DirectDraw.pas http://develprog.ucoz.ru/_fr/0/Common.rar (41kb) DirectDraw очень медленная штука, но он быстрее GDI. Если вы соберетесь делать простенькую 2D игру, то используйте DirectDraw, если вам потребуется реализовать мощные спецэффекты, то лучше использовать direct3d! |
22.03.2008, 18:26 | #18 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Т.е. если нужна крутая обработка в 2D , эффекты типа Фотошопного пост-обработчика, то direct3d по любому справится быстрее чем DirectDraw ...я правильно понимаю?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
22.03.2008, 19:13 | #19 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Beermonza, да, ты правильно понимаешь. В DirectDraw используется обычный блитинг, перестановка битов с одного участка памяти на друго, это достаточно медлено, тем более продумать хороший спецэффект в direct3d гораздо проще, чем в DirectDraw.
В Direct3D вы задаете вершины объекта и натягиваете на него текстуру. Можно добиться очень красивых эффектов: повороты, полупрозрачность, морфинг, частичная полупрозрачность... . И скорость при этом почти не изменится! Но DirectDraw пойдет почти на всех видеокартах, а вот с Direct3D могут возникнуть проблемы, но они вполне решаемые! Плюс Direct3D в том, что его проще понять и выучить, т.к. там имеются изначально функции для загрузки текстур разных форматов(bmp,jpg,png,tga,dds), для загрузки 3D моделей из *.x и многое друго. |
23.03.2008, 17:00 | #20 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Понятно, спасибо.
У меня есть несколько примеров Direct3D, даже на ноутбуке с его неполноценной "видеокартой" все работает, ...в принципе, ничего сложного. Что меня в 2D больше привлекает, так это отсутствие кубизма, гладкие, плавные очертания объектов, ...безграничное качество текстур (всегда полное), даже киношное качество (нужно постараться), а если игра от 3-го лица, то и смысла в 3D я не вижу, ...все это прекрасно реализуемо в 2D, нужно лишь подумать. Напротив, можно только догадываться какой мощности потребуется машина, чтобы реализовать все это в 3D, если каждый кадр игры сравним с рендерингом отдельного статического изображения скажем в 3ds Max или SoftImage. Жуткое зрелище можно наблюдать
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подключение DirectDraw | g@mbler | Общие вопросы Delphi | 1 | 09.11.2006 20:18 |