Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

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

Ответ
 
Опции темы
Старый 18.01.2008, 09:28   #1
shepelin
Форумчанин
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
Репутация: 86

icq: 418479956
По умолчанию Скорость движения обьекта

Приветствую. Такая проблема в Delphi с помошью OpenGL нарисовал обьект, его движение выполняется на событие таймера(за интервал на определенную длинну), конечно при минимальном интервале движение быстрое, НО нужно еще увеличить скорость только не за счет увеличения длинны сдвига. Может можно как то таймер переработать? Или еще что нибудь? Вобщем прошу совета...
Спасибо.
__________________
-Сколько будет 2х2=4?
-TRUE

Последний раз редактировалось shepelin; 18.01.2008 в 09:32.
shepelin вне форума   Ответить с цитированием
Старый 18.01.2008, 10:43   #2
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,262
Репутация: 931
По умолчанию

А какой смысл двигать объект более чем 1000 раз в секунду?
Но даже не успеет столько раз перерисоваться.
Это для теста что-ли?
Sibedir вне форума   Ответить с цитированием
Старый 18.01.2008, 10:54   #3
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,262
Репутация: 931
По умолчанию

А вообще-то, можно в обработчике на таймер циклом запустить перерисовку до тех пор пока на начался следующий цикл. Ну или что-то типа этого. А лучше поток заставить непрерывно двигать объект.
Sibedir вне форума   Ответить с цитированием
Старый 18.01.2008, 16:14   #4
shepelin
Форумчанин
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
Репутация: 86

icq: 418479956
По умолчанию

пасибо приятно увидеть новый взгляд на решение проблемы
__________________
-Сколько будет 2х2=4?
-TRUE
shepelin вне форума   Ответить с цитированием
Старый 18.01.2008, 20:46   #5
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Сдерживающий фактор - частота обновления монитора. Поэтому не нужно боятся увеличивать шаг, конечный результат будет тот же.
mutabor вне форума   Ответить с цитированием
Старый 23.01.2008, 11:30   #6
shepelin
Форумчанин
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
Репутация: 86

icq: 418479956
По умолчанию

все таки нужно рисовать очень быстро, помогите советишком
__________________
-Сколько будет 2х2=4?
-TRUE
shepelin вне форума   Ответить с цитированием
Старый 23.01.2008, 12:12   #7
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Цитата:
Сообщение от shepelin Посмотреть сообщение
все таки нужно рисовать очень быстро, помогите советишком
Есть несколько вопросов:
Отрисовывать графику быстро? Или перемещать объект быстро?
Графику как выводишь, по тому же таймеру в к-ром объект двигаешь или независимо?

Пояснение насчет частоты монитора:
Как бы часто ты не менял положение объекта, на экране это все отображается с частотой к примеру 75 герц. Это 75 раз в секунду. Можно двигать объект на одну точку хоть 1000 раз в секунду, но на экране изменение отобразится когда объект переместится примерно на 13 точек. Так что можно смело ставить интервал 10 мс, и шаг 10 точек.
То же касается высоких fps. Все что выше 75 остается "за кадром".
mutabor вне форума   Ответить с цитированием
Старый 23.01.2008, 12:32   #8
shepelin
Форумчанин
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
Репутация: 86

icq: 418479956
По умолчанию

вот событие таймера:
Код:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Y:=Y+TY;
  SY:=SY+TY;                   
    if SY>=2*N*YShift+2*SHeight then
    begin
    Y:=-SY+TY;
    SY:=0;
    end;
    formpaint(nil);

end;

и вот событие OnPaint для формы
Код:

procedure TForm1.FormPaint(Sender: TObject);
var
 ps:TPaintStruct;
begin
 BeginPaint(Handle,ps);
 glClearColor(1,1,1,1);
 glClear(GL_COLOR_BUFFER_BIT);


 glCallList(1);
 glTranslatef(0,Y,0);
 Y:=0;
 glFlush();
 swapBuffers(dc);
 EndPaint(Handle,ps);
end;

нужно обьект быстро двигать
__________________
-Сколько будет 2х2=4?
-TRUE

Последний раз редактировалось shepelin; 23.01.2008 в 12:37.
shepelin вне форума   Ответить с цитированием
Старый 23.01.2008, 12:46   #9
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Цитата:
Y:=Y+TY;
SY:=SY+TY;
if SY>=2*N*YShift+2*SHeight then
begin
Y:=-SY+TY;
SY:=0;
end;
Где тут что? Можно комментарии? TY - скорость?
В любом случае скорость увеличь и будет быстрее двигаться.

А вывод графики можно из таймера убрать. В таймере только изменять координаты, а выводить по Application.Idle, получишь максимальный fps, а логика по таймеру будет

Код:

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
//здесь код вывода графики
Done:=False;
end;


Последний раз редактировалось mutabor; 23.01.2008 в 12:49.
mutabor вне форума   Ответить с цитированием
Старый 23.01.2008, 12:51   #10
shepelin
Форумчанин
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
Репутация: 86

icq: 418479956
По умолчанию

TY скорость код действительно не понятный извиняюсь, ок попробую Aplication.Idle пасибо
__________________
-Сколько будет 2х2=4?
-TRUE
shepelin вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить направление движения мыши? yourself Общие вопросы Delphi 8 30.05.2008 08:04
Учет движения денежных средств в паскале SEREG@ Помощь студентам 4 22.04.2008 08:00
Движения кнопки xTANATOSx Общие вопросы Delphi 1 06.11.2007 10:19
Расписание движения поездов. KORT БД в Delphi 3 17.09.2007 14:01


18:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru