Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
14-1103705307
vidiv
2004-12-22 11:48
2005.01.09
Переходник IDE для ноутбука


9-1095646679
Jus
2004-09-20 06:17
2005.01.09
DelphiX и спрайты.


8-1096958023
Real Santa
2004-10-05 10:33
2005.01.09
DPI


1-1103824947
zokzok
2004-12-23 21:02
2005.01.09
Фреймы


14-1102655868
leonidus
2004-12-10 08:17
2005.01.09
Нужен совет тех кто использует качалки сайтов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский