Работаю на Delphi7, пишу игрушку используя DelphiХ,
на моём компе всё работает без проблем, но на
некоторых компах происходит затормаживание
прорисовки кадров. В кодах по обработке поведения
спрайтов ошибок нет, компы тоже не слабые,
догадываюсь что это из-за тймера код привидён ниже.
Может кто встречался с подобной проблемой помоготе
procedure TForm2.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw1.CanDraw then exit;
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
with DXDraw1.Surface.Canvas do
begin
Textout(20, 30, 'Demo');
Release;
end;
DXDraw1.Flip;
end;
Для начала — пусть твой таймер (обработчик события) пишет в лог время каждого своего запуска. Посмотришь, так ли он часто получает управление, как тебе надо.
Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, megalom, Вы писали:
S>Для начала — пусть твой таймер (обработчик события) пишет в лог время каждого своего запуска. Посмотришь, так ли он часто получает управление, как тебе надо.
Вставил в таймер код для записи даты каждого запуска,
интересная картина, на одном комьютере запуск происходит
30 раз в секунду, а на комьютере где происходит
затормаживани всего 1-2 раз тоесть на одном FPS 30 на другом 1-2.
(почему графика тормозит теперь понятно),
Компьютеры не очень отличаются друг от друга, можно
даже сказать одной и тойже конфигуратции.
Ну почему на одном 30 на другом 1
Помогите понять
1) Таймерное событие происходит при обработке очереди сообщений. Соответственно, повесил бы мониторинг на очередь — возможно, на Application.OnMessage — и проверил бы, насколько стабильно забираются события. Возможно, кто-то отжирает почти все время основного потока.
2) На обоих компьютерах прогнал бы приложение под профайлером (например AQTime). Сравнил бы пропорции и разницу — одинаков ли профиль затрат на обоих компьютерах или на втором прорезается кто-то, кто на первом хорошо и быстро работает.
3) Поставил бы на контроль время, в течение которого пашет твой обработчик — возможно все-таки тормозит именно отрисовка, например из-за видеокарточки
4) Постарался бы сделать максимально чистый эксперимент, то есть убрал бы из памяти все посторонние программы, сравнил бы версии ОС, патчи и драйвера...
После тестов, выяснил что проблема не в таймере, а в
отрисовке, полез в коды ДелфиХ, а там дебри короче не
стал искать баги, нашел более новую версию ДелфиХ и
там действительно был баг в прорисовке, его исправили
хотя опять же криво, было fps=1 стало 5, но нужно как
минимум 24 что делать не знаю ,наверное все-таки
придётся копаться в этих дремучих кодах.
Hello megalom, you wrote:
> минимум 24 что делать не знаю ,наверное все-таки > придётся копаться в этих дремучих кодах.
А может вообще отказаться от DelphiX?
Можно, например, подключить библиотеку типов "DirectX 8 for Visual Basic" (Project — Import Type Library)
--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re[6]: Помогите с DelphiX
От:
Аноним
Дата:
10.07.05 20:48
Оценка:
Здравствуйте, Slava Antonov, Вы писали:
SA>А может вообще отказаться от DelphiX? SA>Можно, например, подключить библиотеку типов "DirectX 8 for Visual Basic" (Project — Import Type Library)
Наверное придётся знакомится с DirectX поближе,
вот только как можно безболезненно перейти с
DelphiX на DirectX ведь я уже почти закончил
проект на DelphiX, нехотелось бы все начинать
с начала , может все-таки кто нибуть
встречался с таким багом и нашел решение ?