Форум: "Игры";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизСпрайты и канва Найти похожие ветки
← →
_Дельфин_ (2004-09-10 20:30) [0]Во многих статьях по созданию спрайтов в играх в конце я читал о том, что спрайты выводятся на канву. Но ведь она весьма неустойчива, - например, если сверху появилось другое окно, то изображение стирается. А если у меня так происходит часто и к тому же много спрайтов - не перерисовывать же постоянно целый экран?! Или я чего-то не понимаю? Объясните, пожалуйста, как тут быть и заодно объясните, как избавиться от мелькания изображения при перерисовке
← →
XProger © (2004-09-10 20:41) [1]
var
Page : TBitmap;
...
//в инициализации
Page := TBitmap.Create;
// Затем рисуешь всё на Page.Canvas
// после отрисовки всего что хотел пишешь...
Canvas.Draw(0, 0, Page);
И никаких мерцаний не будет, это называется двойная буферация (практически :). Т.е. изображение создаётся в памяти, а затем одним махом выводится на канву.
P.S.
После того, как наиграешься с канвой - начинай изучение OpenGL или DirectX...
← →
kastik (2004-09-10 23:33) [2]А можно еще свойству doublebuffered присвоить true. И не будет ничего мерцать.
← →
XProger © (2004-09-11 00:50) [3]Это где такое? KOL?
← →
DeadMeat © (2004-09-11 11:51) [4]Нет это TForm
---
...Death Is Only The Begining...
← →
_Дельфин_ (2004-09-11 22:31) [5]А как тогда тут быть? Я вот вывожу спрайт(героя) на участок поверхности. Как мне сделать, чтобы когда надо будет герою сделать движение, т. е. новое положение отрисовать, старое исчезло? Если я, может, не корректно объяснил - чтобы рисунки не накладывались один на один?
← →
XProger © (2004-09-11 23:02) [6]Очищай bmp.Canvas. FillRect"ом или ещё как-нить... А затем рисуй всё заново!
← →
Megabyte-Ceercop © (2004-09-13 06:18) [7]
> _Дельфин_
Смотри:
Чтобы изображение не терялось после того, как над твоим окном побывало другое окно, перерисовывай весь экран по событию формы GetFocus. Это восстановит картинку, и не загрузит основной процесс.
Для исчезновения предыдущего движения, перерисовывай участок уровня в том месте, где был твой герой в предыдущем кадре (это не так ресурсоемко), затем перерисовывай части уровня, где вообще были какие-либо подвижные спрайты, затем выводи все спрайты по новым координатам. (Если уровинь просто одного цвета, то заливай участки экрана соотв цветом).
Для канваса вообще, смотри пример в Delphi tutorials (это папка в директории где стоит дельфи) там есть примет EarthPong.
А насчет узучай OpenGL или DirectX - мой тебе совет: DirectX - only and forever!!!
← →
имя (2004-09-13 06:52) [8]Удалено модератором
← →
Megabyte-Ceercop © (2004-09-13 07:07) [9]
> > _Дельфин_
Верь мне. Реально. :-|
> _бобомен
Верь мне. Реально. :-|
← →
имя (2004-09-14 08:57) [10]Удалено модератором
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.06 c