Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизOpenGL и WinApi Найти похожие ветки
← →
parovoZZ © (2004-06-28 22:59) [0]Решил поизучать графику. ВотЪ. И сразу возник тупик:
Почему вот это работает (т.е. функция glDraw вызыается с максимально возможной частотой):while not finished do
begin
if (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) then
begin
if (msg.message = WM_QUIT) then
finished := True
else
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end
else
begin
glDraw();
SwapBuffers(h_DC);
if (keys[VK_ESCAPE]) then
finished := True
else
ProcessKeys;
end;
end;
glKillWnd(FALSE);
Result := msg.wParam;
end;
а вот это нет (та же функция вызывается только тогда, когда мы что-то делаем)begin
glCreateWnd (800, 600, false, 32);
While GetMessage (Msg, 0, 0, 0) do
begin
glDraw();
SwapBuffers(h_DC);
DispatchMessage (Msg);
end;
glKillWnd(FALSE);
end.
← →
Игорь Шевченко © (2004-06-28 23:40) [1]
> Почему вот это работает
Потому что кроме графики неплохо бы еще и windows поизучать. В первом случае функция вызывается, когда отсуствует обработка сообщений, во втором вообще черт знает что происходит
← →
jack128 © (2004-06-28 23:46) [2]ИМХО первый вариант - хуже. Создает иллюзию, что все нормально работает - но бред!!! И вообще - ходячий тормоз для системы.. На Королевстве Делфи были выложены примеры Краснова (сорри если фамилию спутал) - скачай и посмотри как он делает..
← →
parovoZZ © (2004-06-29 21:00) [3]Ну ясно, будем дальше изучать.
← →
parovoZZ © (2004-07-01 00:17) [4]...А он делает с помощью VCL. Не подходит, хочу WinApi.
← →
jack128 © (2004-07-01 01:45) [5]
> ...А он делает с помощью VCL. Не подходит, хочу WinApi.
?? там почти все примеры даются в двух вариантах - на апи и всл..
← →
parovoZZ © (2004-07-01 10:51) [6]Спасиб, разобрался. Я так понял, что лучше всё делать с помощью таймера, а то что в цикле - это для получения максимальной скорости?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c