Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

Перерисовка в Lazarus е   Найти похожие ветки 

 
@!!ex ©   (2008-04-11 19:10) [0]

Прошу прощения что опять в "Прочее" пишу. Шансы получить ответ на этой недели в "FPC" - маловероятный.
Пишу обычное приложение(просмоторщик моделей). С формой.
Нужно форму постоянно перерисовывать. И отображаьб модель.
Как делал в дельфи:
OnPaint:
begin
 //Render
 SwapBuffers(DC);
 InvalidateRect(Handle,nil,false);
end;

Попробовал сделать тоже самое в Lazaruse.
Во-первых - видимо форма перед отрисовкой заливается цветом. В итоге я наблюдаю жесткое мерцание. ПРичем преимущественно вижу не результат отрисовки, а форму залитую цветом.
Второй момент - это то, что прога перестает реагировать на закрытие. Даже на Halt;


 
Eraser ©   (2008-04-11 19:40) [1]

> OnPaint:
> begin
> //Render
> SwapBuffers(DC);
> InvalidateRect(Handle,nil,false);

бесконечное зацикливание, зачем это?

> В итоге я наблюдаю жесткое мерцание

скорее всего проблема в erase background.


 
Sapersky   (2008-04-11 19:48) [2]

If the bErase parameter is TRUE for any part of the update region, the background is erased in the entire region, not just in the given part.
Может, какой-то контрол на форме перерисовывает себя через InvalidateRect фрагмента формы c bErase=True.

Другой способ получить постоянную перерисовку: OnIdle с Done := False, если оно есть в Лазарусе.


 
@!!ex ©   (2008-04-11 20:04) [3]

> бесконечное зацикливание, зачем это?

Надо рисовать анимированный объект. Как иначе?


> If the bErase parameter is TRUE for any part of the update
> region, the background is erased in the entire region, not
> just in the given part.
> Может, какой-то контрол на форме перерисовывает себя через
> InvalidateRect фрагмента формы c bErase=True.

Не. Форма пустая абсолютно.


> Другой способ получить постоянную перерисовку: OnIdle с
> Done := False, если оно есть в Лазарусе.

Нету...

Видимо придется переписать на WinAPI без форм...


 
Eraser ©   (2008-04-12 01:33) [4]

> [3] @!!ex ©   (11.04.08 20:04)
> > бесконечное зацикливание, зачем это?
>
> Надо рисовать анимированный объект. Как иначе?

по таймеру, не обязательно который на принципе wm_timer работает.
а иначе будет всегда 100% загрузка CPU.


 
grisme   (2008-04-12 08:08) [5]


> Eraser ©   (12.04.08 01:33) [4]


а если Sleep(1);? :-)


 
boa_kaa ©   (2008-04-12 08:41) [6]


> Eraser ©   (12.04.08 01:33) [4]

это обычная практика при отрисовке 3D графики
откуда по-твоему fps берутся?


 
Sapersky   (2008-04-12 17:35) [7]

> Другой способ получить постоянную перерисовку: OnIdle с
> Done := False, если оно есть в Лазарусе.
Нету...


На всякий случай уточню: TApplication.OnIdle.

Кстати, не очень понятно, зачем постоянный рендер в просмотрщике моделей. FPS можно посчитать и как 1000/RenderTime, хотя получится "не совсем тот" FPS, но изменения в производительности он отражать будет.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1209300169
homm
2008-04-27 16:42
2008.05.25
Как из Тmemo удалить последний перенос строки?


15-1207729431
TStas
2008-04-09 12:23
2008.05.25
Неработающие порноссылки в "компонетах"


15-1207764860
@!!ex
2008-04-09 22:14
2008.05.25
Ура! Проект собрался на FPC!!


2-1209367199
operator
2008-04-28 11:19
2008.05.25
собственные hint и warning


15-1207926628
@!!ex
2008-04-11 19:10
2008.05.25
Перерисовка в Lazarus е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский