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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2008, 08:28   #1
shepelin
Пользователь
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
По умолчанию Скорость движения обьекта

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

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

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

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

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

Сдерживающий фактор - частота обновления монитора. Поэтому не нужно боятся увеличивать шаг, конечный результат будет тот же.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.01.2008, 10:30   #6
shepelin
Пользователь
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
По умолчанию

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

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

Пояснение насчет частоты монитора:
Как бы часто ты не менял положение объекта, на экране это все отображается с частотой к примеру 75 герц. Это 75 раз в секунду. Можно двигать объект на одну точку хоть 1000 раз в секунду, но на экране изменение отобразится когда объект переместится примерно на 13 точек. Так что можно смело ставить интервал 10 мс, и шаг 10 точек.
То же касается высоких fps. Все что выше 75 остается "за кадром".
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.01.2008, 11:32   #8
shepelin
Пользователь
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
По умолчанию

вот событие таймера:
Код:
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 в 11:37.
shepelin вне форума Ответить с цитированием
Старый 23.01.2008, 11:46   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
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;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

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

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


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

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

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


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