Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Внизapplication.ProcessMessages Найти похожие ветки
← →
CMOS © (2006-05-05 22:09) [0]Есть ли аналог процедуры DoEvent (из VB) в Delphi?
Инициализирую D3D8
Устанавливаю необходимые параметры,
В цикле
application.ProcessMessages
устанавливаю матрицу вида
Выход когда условие
Проц подлетает под стольник. Даже мышка не шевелится. Снять задачу не возможно - диспетчер не грузится. Винт молчит.
В VB в такой же проге такого не было. DoEvent дает обработать все события, затем продолжает выполнять процедуру.
← →
begin...end © (2006-05-05 22:14) [1]Application.ProcessMessages тоже последовательно выбирает все накопившиеся сообщения из очереди и транслирует/диспетчеризует их, после чего возвращает управление.
← →
Eraser © (2006-05-05 22:20) [2]
> CMOS © (05.05.06 22:09)
> Проц подлетает под стольник. Даже мышка не шевелится.
так не должно быть какие бы вычисления не производились, при нормальном приоритете процесса и в user mode.
показывай код.
← →
Anatoly Podgoretsky © (2006-05-05 22:41) [3]DoEvent приходит а ProcessMessages, полный эквивалент.
← →
Cash © (2006-05-06 07:28) [4]Ох уж мне эти цыклы, весно с ними маются! :)))
Не в цыкле это надо делать! Если у тебя Application есть, значит есть и
OnIdle событие. В нем и надо все делать, только Done в false ставь, тогда
все будет крутиться с максимальной скоростью. ProcessMessages в OnIdle
не нужен, т. к. (вроде) OnIdle наступает после обработки очереди
сообщений.
← →
evvcom © (2006-05-06 08:36) [5]
> OnIdle событие. В нем и надо все делать
Все - это что? Все приложение туда запихать? :)
← →
Cash © (2006-05-06 14:37) [6]> Все - это что? Все
Ну если охота, то я мешать не буду! :)))
А так, ну... эти... нормальные шкодеры там делают всю обработку вывода
на экран и ввода с устройств, ведь речь (вроде) идет о D3D, как я понял
чел с этим какраз и намудрил. :)))
← →
evvcom © (2006-05-06 14:44) [7]
> нормальные шкодеры там делают всю обработку вывода
> на экран и ввода с устройств
Не знаю, чего там делают шкодеры. К таковым себя не отношу.
> ведь речь (вроде) идет о D3D
А я думаю, чего это такое "D3D8"? Тогда автору в Игры надо было стучаться...
← →
Cash © (2006-05-06 17:39) [8]Ну я просто не рискнул просить всевышних о переносе этой ветки в
конфу "Игры". :)))
Просто понадялся что они сами это сделают, но что то их незаметно в
последнее время. :)
Эй, CMOS, откликнись! Ты там игру чтоль изладить решил? Иль еще чего?
← →
Kolan © (2006-05-06 20:10) [9]нормальные шкодеры там делают всю обработку вывода
А как зовут тех, кто доп потоки использует :)
← →
Anatoly Podgoretsky © (2006-05-06 20:16) [10]Kolan © (06.05.06 20:10) [9]
Извращенцы.
← →
Cash © (2006-05-06 21:30) [11]Kolan © (06.05.06 20:10) [9]:
> А как зовут тех, кто доп потоки использует :)
[с прищепкой на носу]Типа[/] их зовут продвинутые шкодеры! :)))
Но омжно еще и как Анатолий посоветовал. :)))
ЗЫ: а всевышние видать нас покинули. :)
← →
CMOS © (2006-05-13 15:15) [12]
> OnIdle событие
А здесь по подробнее
Все нормально, ошибка в коде была. Сам разобрался.
Мне тут посоветовали вместо цикла рисовать все на событие Paint формы. Что-то сомнительно. Должна произойти рекурсия и я просто ничего не увижу. Попробовал. Получилось!!! Даже application.ProcessMessages не нужен. Загрузка проца 3%.
Объясните мне почему. Вот код:
procedure TForm1.FormPaint(Sender: TObject);
begin
D3DXMatrixLookAtLH(MatV, vEye, vAt, vUp);
Dev.SetTransform(D3DTS_VIEW, MatV);
Dev.Clear(0, 0, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
0, 1, 0);
Dev.BeginScene;
...
Dev.EndScene;
Dev.Present(0, 0, 0, 0);
end;
После ПОЛНОГО выполнения, процедура повторяется.
По уму если, то Dev.Present(0, 0, 0, 0) должно вызвать событие Paint. Получится рекурсия. Конца не будет.
Вообще, тему нужно переназвать и перенести
← →
Cash © (2006-05-13 18:37) [13]CMOS © (13.05.06 15:15) [12]:
> Вообще, тему нужно переназвать и перенести
Ты давай лучше сам регься и рули к нам! :)))
Т. е. в конференцию "Игры", там тебе все покажут и расскажут. Может даже
прожуют, и всяко такое! :)))
ЗЫ: а скакой бабушки Dev(IDirect3DDeviceX) должен у какой то там формы
Paint Вызывать??? 8)
Там дело в том, что Paint срабатывает для перерисовки формы, форму
перекрыл - перерисовалось, мышой дернул - перерисовалось, и т. д.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c