|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.04.2010, 17:19 | #1 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
Анимация c использованием GDI
Здравствуйте уважаемые программисты!
Недавно взялся за написание небольшой игры, причём делаю это с использованием средств GDI. В процессе создания возникли следующие вопросы: 1)как можно буферезировать ещё не отрисованные элементы, с целью последующего вывода в поле, дабы избежать эффект "мерцания"? Например, пользователь нажал клавишу вниз - в окне должна отрисоваться линия, однако прорисовка должна осуществляться из буфера. Возможно ли это? 2)Хотел бы спросить насчёт правильности организации функции, отвечающей за вывод графики: Код:
Кто имеет опыт создания игр, подскажите пожалуйста. Заранее благодарю |
08.04.2010, 13:29 | #2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Вообще, самый фундаментальный и "правильный" способ избавиться от мерцания раз и навсегда - использовать графический ускоритель. Тем более, если занимаешься играми - по мере усложнения программы мерцание будет всё сильнее.
На сколько я знаю, раньше мерцания избегали, перерисовывая только те пиксели, которые должны измениться. Но определение этих пикселей - задача сама по себе непростая. По поводу организации функции - это зависит от размера игры. Если она планируется расширяться до N тысяч строк, то лучше заранее вложить в код возможность расширения. Но без самого кода перед глазами точнее посоветовать не смогу. |
10.04.2010, 21:48 | #3 | |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
Цитата:
Код:
Последний раз редактировалось Alexcomeback; 10.04.2010 в 21:51. |
|
12.04.2010, 12:05 | #4 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Если игра правда небольшая, и если две функции всегда вызываются одна за другой, я бы объединил эти функции.
Хотя тут однозначности быть не может - нужно хорошо предвидеть будующее развитие проекта, а также выбор зависит от личного опыта и характера программиста. |
16.04.2010, 22:53 | #5 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
Личного опыта почти нет, характер... А он влияет на программы?))
Спасибо за совет, буду думать, решать. |
16.04.2010, 23:10 | #6 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Я бы тоже всё в одну загнал. Если программа простая, то дробить смысла особенного не вижу.
Что не понравилось в ваших функциях - они получают hDC снаружи (это либо контекст устройства, либо контекст в памяти [т.н. совместимый констекст]). А внутри делают ему Release. Как по мне, так это неправильно. Если вы передаёте в функцию контекст из вне, то и освобождайте его тоже вне функции. По поводу мерцания - попробуйте рисовать всё на битмар. А после того, как отрисовали всю сцену в этот битмап, BitBlt его на контекст device.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С# : GDI+ TextBox | Natok | Помощь студентам | 2 | 17.05.2009 19:53 |
GDI | EdNovice | Win Api | 4 | 12.02.2008 09:14 |
литература GDI+ | studenth | Win Api | 3 | 16.10.2007 17:11 |
GDI plus API | delphi_coder | Win Api | 1 | 28.09.2007 12:41 |