Конференция "Игры" » Перерисовка OpenGL-сцены [Delphi]
 
  • float (05.04.11 19:45) [0]
    Здравствуйте!

    Моя задача состоит в отображении функций двух переменных в виде поверхностей. Функции задаются довольно громоздкими массивами. Для отображения используется TPanel. Тут вопросов нет - я подменил её оконную процедуру, ловлю в ней WM_PAINT и отрисовываю всё соответственно содержимому массивов.

    Вопрос новичка: если необходима перерисовка (поступило сообщение WM_PAINT), а поверхность должна отображаться та же самая (массивы не изменились), мне всё равно нужно будет рисовать картинку gl-функциями ЗАНОВО, или же можно как-то сохранить её в чём-то типа буфера (условно говорю) и потом быстро вывести этот буфер?
  • Думкин © (06.04.11 07:56) [1]

    > float   (05.04.11 19:45)  

    glNewList (1, GL_COMPILE);

    glEndList;

    glCallList(1);
  • grisme © (07.04.11 09:26) [2]
    Подозреваю, что если не будешь OGL перерисовывать, содержимое будет затираться другими окнами с графикой или при покидании окна с OGL за пределы экрана. :)
  • V (07.05.11 18:49) [3]
    Спасибо, почерпнул.
  • @!!ex © (09.05.11 09:46) [4]
    Отрендерь в FBO.
    FBO обновляй только когда данные изменились.
    на WM_PAINT отрисовывай FBO на экран.

    Списки из [1] мало помогут. Там все равно при каждом рендере полный расчет проводится.
    Просто данные лежат на видухе в виде списка команд.
    + на ATI списки тормозят
    + списки - depricated функционал
  • Sapersky (10.05.11 10:46) [5]
    Проще включить двойную буферизацию (если она ещё не включена) и по WM_PAINT выводить задний буфер на экран - glSwapBuffers или как там.
  • @!!ex © (12.05.11 08:58) [6]
    просто SwapBuffers.
    но у нас же актуальная картинка только в одном буффере.
    первый WM_PAINT даст правильную картинку, а второй выведет на экран не актуальный буффер.
  • Sapersky (12.05.11 13:05) [7]
    В оконном режиме (сужу по DirectX) Swap в чистом виде сделать невозможно, на самом деле делается копирование заднего буфера на экран. Поэтому картинки одинаковые.
  • Имется таблица значений функции двух переменных, помещённая в таблицу
    базы данных(конкретно используется база данных dBase).
    в таблице содержатся координаты точки плоскости (X,Y) и значение функции в этой точке
    Есть ли возможность нарисовать на экране и может быть напечатать на принтере поверхность, в которую переводится заданная часть плоскости
    определения функции.
  • MBo © (28.01.13 09:40) [9]
    >Есть ли возможность нарисовать на экране и может быть напечатать на принтере поверхность
    Такая возможность есть, например, при использовании TeeChart Pro или другой библиотеки построения трехмерных графиков
 
Конференция "Игры" » Перерисовка OpenGL-сцены [Delphi]
Есть новые Нет новых   [134427   +38][b:0][p:0]