-
Здравствуйте!
Моя задача состоит в отображении функций двух переменных в виде поверхностей. Функции задаются довольно громоздкими массивами. Для отображения используется TPanel. Тут вопросов нет - я подменил её оконную процедуру, ловлю в ней WM_PAINT и отрисовываю всё соответственно содержимому массивов.
Вопрос новичка: если необходима перерисовка (поступило сообщение WM_PAINT), а поверхность должна отображаться та же самая (массивы не изменились), мне всё равно нужно будет рисовать картинку gl-функциями ЗАНОВО, или же можно как-то сохранить её в чём-то типа буфера (условно говорю) и потом быстро вывести этот буфер?
-
> float (05.04.11 19:45)
glNewList (1, GL_COMPILE);
glEndList;
glCallList(1);
-
Подозреваю, что если не будешь OGL перерисовывать, содержимое будет затираться другими окнами с графикой или при покидании окна с OGL за пределы экрана. :)
-
Спасибо, почерпнул.
-
Отрендерь в FBO.
FBO обновляй только когда данные изменились.
на WM_PAINT отрисовывай FBO на экран.
Списки из [1] мало помогут. Там все равно при каждом рендере полный расчет проводится.
Просто данные лежат на видухе в виде списка команд.
+ на ATI списки тормозят
+ списки - depricated функционал
-
Проще включить двойную буферизацию (если она ещё не включена) и по WM_PAINT выводить задний буфер на экран - glSwapBuffers или как там.
-
просто SwapBuffers.
но у нас же актуальная картинка только в одном буффере.
первый WM_PAINT даст правильную картинку, а второй выведет на экран не актуальный буффер.
-
В оконном режиме (сужу по DirectX) Swap в чистом виде сделать невозможно, на самом деле делается копирование заднего буфера на экран. Поэтому картинки одинаковые.
-
Имется таблица значений функции двух переменных, помещённая в таблицу
базы данных(конкретно используется база данных dBase).
в таблице содержатся координаты точки плоскости (X,Y) и значение функции в этой точке
Есть ли возможность нарисовать на экране и может быть напечатать на принтере поверхность, в которую переводится заданная часть плоскости
определения функции.
-
>Есть ли возможность нарисовать на экране и может быть напечатать на принтере поверхность
Такая возможность есть, например, при использовании TeeChart Pro или другой библиотеки построения трехмерных графиков