Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2009, 00:59   #291
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Алекс Ялта, у таймера какой интервал? ...извини, исходник не смотрел.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 11.04.2009, 11:17   #292
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Таймер интервал в 1 мили секунду установлен
Алекс Ялта вне форума Ответить с цитированием
Старый 11.04.2009, 14:47   #293
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Алекс Ялта Посмотреть сообщение
Вроде бы ознакомился со всей информацией, что есть в нашем разделе. Но всё же решил переспросить. У меня в примере Tbitmap отрисовывается через буффер, но при быстром передвижении явно заметны мелькания изображения. Это означает, что я неправильно где-то отрисовываю или canvas даже через буффер так медленно работает?

Вот код отрисовки:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

Buffer.Canvas.Rectangle(0,0,640,480);

ShipBuf.Canvas.CopyRect(bounds(0,0,64,64),ShipSprite.Canvas,bounds(k*64,str*64,64,64));


Buffer.Canvas.Draw(px,py,ShipBuf);

Form1.Canvas.Draw(0,0,Buffer);
Скажи ка, сколько ты насчитал Canvas'ов в этом коде? ...я вижу 5, ...и при том, что интервал таймера 1 мс, не мудрено обнаружить мелькание, а загрузку процессора смотрел? (ты меня конечно извини, но EXE файлы я не запускаю, только после просмотра кода и самостоятельной компиляции, чего всем советую).
Давай вспомним сколько кадров достаточно для нормального восприятия движения объектов в 2D глазом человека. 24 кадра, но поставим умышленно 30 кадров. Поделим одну секунду на 30, получим приблизительно 33 мс (1000 мс / 30 кадров). ОС работает с графикой в форме сносно не быстрее чем 30 кадров в секунду, при больших изображениях, ...это проверено. Значит нужно ставить 33 мс интервал в таймере, а от лишних Canvas'ов нужно избавляться.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 11.04.2009 в 15:22.
Beermonza вне форума Ответить с цитированием
Старый 12.04.2009, 19:39   #294
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Загрузку процессора через диспетчер задач установить мне не удалось. Выдает при работе приложения 0-1% (Может из-за того, что процессор не слабый). Файл подкачки увеличивается на 3Мб.
Я пытался избавиться от мелькания путем установки интервала таймера в 33 Мс. Мелькание действительно исчезает, но при этом, соответственно, падает скорость перемещения объекта.
После, я выделил обработку перемещения объекта в отдельный таймер с интевалом в 1 Мс, а отрисовку оставил в первом таймере с интервалом в 33 Мс. Мелькания стали чуть менее заметны.
Выходит, что проблема может скрываться в черезмерном использовании canvasa? Но я не могу понять каким образом можно избавиться в том коде от лишних canvas? И какой из них является лишним? Вот весь исходник
Вложения
Тип файла: zip Melkanie.zip (13.6 Кб, 44 просмотров)
Алекс Ялта вне форума Ответить с цитированием
Старый 12.04.2009, 19:55   #295
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

У меня опять ничего не мелькает...
Я изменил вот это начальную строку в таймере
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Buffer.Canvas.FillRect(rect(0,0,640,480));
Хотя разницы особо нет
Манжосов Денис :) вне форума Ответить с цитированием
Старый 12.04.2009, 20:18   #296
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Хочу сделать игру с использованием WinAPI. Но не знаю ничего про вывод графики, если писать всё с нуля. Может кто-нибудь написать урок про вывод графики, используя WinAPI?
Заранее спасибо
Манжосов Денис :) вне форума Ответить с цитированием
Старый 12.04.2009, 22:03   #297
Boris96_2007
Пользователь
 
Аватар для Boris96_2007
 
Регистрация: 27.03.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от -=DeS=- Посмотреть сообщение
В этом уроке я научу вас как можно передвигать обьекты по форме с помощью клавиш...
--------------------------
Начнём.
1)Создайте новый проект File> New> Application
2)Теперь киньте на форму объект TShape
3)После этого выбираем в Object TreeView форму (Form1)
4)В Object inspector на вкладке Events ищем свойство OnKeyDown и щёлкаем на него 2 раза.
5)В созданной процедуре пишем код (я рекомендую вам не просто копировать а понять как это работает!)

Этот код будет двигат фигуру Shape1 на 2 пиксела вверх!
---------------------------
Попробуйте сами написать движение вниз, вправо, влево...
Позже и это будет показано!
Я не понял что такое Теперь киньте на форму объект TShape
Потом После этого выбираем в Object TreeView форму (Form1)
Ну и это 4)В Object inspector на вкладке Events ищем свойство OnKeyDown и щёлкаем на него 2 раза.
5)В созданной процедуре пишем код (я рекомендую вам не просто копировать а понять как это работает!)
расскажите что и куда кликать
Учусь программировать на C++
Boris96_2007 вне форума Ответить с цитированием
Старый 13.04.2009, 07:52   #298
Xzen
Пользователь
 
Аватар для Xzen
 
Регистрация: 20.01.2009
Сообщений: 36
По умолчанию

Падскажити плиз как сделать чтоб объект не только ездил при нажатии кнопок но и поворачивался на N угол если к примеру зажать стрелку влево
Xzen вне форума Ответить с цитированием
Старый 13.04.2009, 09:45   #299
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Xzen Посмотреть сообщение
Падскажити плиз как сделать чтоб объект не только ездил при нажатии кнопок но и поворачивался на N угол если к примеру зажать стрелку влево
Если Вы новичек, то без сторонних библиотек (типа DelphiX) будет сложновато. Примеров на форуме полно
http://www.programmersforum.ru/searc...earchid=233664
Алекс Ялта вне форума Ответить с цитированием
Старый 13.04.2009, 13:24   #300
Алекс Ялта
Пользователь
 
Аватар для Алекс Ялта
 
Регистрация: 27.01.2009
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Boris96_2007 Посмотреть сообщение
Я не понял что такое Теперь киньте на форму объект TShape
Потом После этого выбираем в Object TreeView форму (Form1)
Ну и это 4)В Object inspector на вкладке Events ищем свойство OnKeyDown и щёлкаем на него 2 раза.
5)В созданной процедуре пишем код (я рекомендую вам не просто копировать а понять как это работает!)
расскажите что и куда кликать
Объект TShape находится на закладке Additional палитры компонентов Delphi. На скрине, который прилагается, выделено красным.
Object TreeView находится по умолчанию в левом верхнем углу, под меню.
Object inspector располагается по умолчанию сразу под окошком Object TreeView (в левом нижнем углу).
Что и куда кликать уже рассказали, смотрите внимательно и кликайте)
Изображения
Тип файла: jpg Shape.jpg (41.7 Кб, 196 просмотров)
Алекс Ялта вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошие уроки Render Общие вопросы Delphi 9 15.09.2012 07:13
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16
Учебники для новичков в програмировании Рар Общие вопросы Delphi 6 08.01.2007 08:07