Конференция "Игры" » Повторный вывод уже построенной сцены в OpenGL. [Windows]
 
  • AlexanderMS © (21.07.07 16:31) [0]
    Ситуация такая. Программа после расчётов строит и выводит сцену. Во время следующей прорисовки производить расчёты нет необходимости, так как всё уже просчитано: нужно лишь снова отобразить сцену (передвинув её), не тратя снова времени на расчёты. Вопрос: как сохранить построенную сцену, чтобы потом её снова быстро вывести?

    P. S. Надеюсь, Вы поняли, что я имею ввиду, просто новички выражаются не всегда понятно.
  • AlexanderMS © (21.07.07 16:52) [1]
    Нашёл: через списки (glNewList). Спасибо.
  • RzCoDer © (21.07.07 16:58) [2]
    можно через VBO
  • @!!ex © (21.07.07 18:15) [3]
    Кстати. Какая разница между VBO и Списками по скорости? Кто нить измерял??
  • AlexanderMS © (21.07.07 18:32) [4]

    > можно через VBO

    А это как расшифровывается?
  • RzCoDer © (21.07.07 19:03) [5]

    > AlexanderMS ©   (21.07.07 18:32) [4]

    Vertex Buffer Object. Об использовании можешь тут почитать http://www.mirgames.ru/articles/opengl/vbo.html
  • XProger © (22.07.07 10:49) [6]
    @!!ex, колоссальная при объектах свыше нескольких тысяч поли
  • @!!ex © (22.07.07 14:20) [7]
    > [6] XProger ©   (22.07.07 10:49)

    Кто быстрее?
  • AlexanderMS © (22.07.07 18:20) [8]
    VBO, наверное. Сделал со списками - тормоза и зависания при последующей прорисовке. Хотя в общем, объектов немного (14 Quads-ов), но один фоновый - большой, и тормозит.
  • RzCoDer © (22.07.07 18:22) [9]

    > Сделал со списками - тормоза и зависания при последующей
    > прорисовке. Хотя в общем, объектов немного (14 Quads-ов),
    >  но один фоновый - большой, и тормозит.

    тут явно не в прорисовке дело) ищи лаги где то у себя
  • AlexanderMS © (22.07.07 18:40) [10]
    RzCoDer ©   (22.07.07 18:22) [9]

    Мне бы понять сначала, каким образом происходит оптимизация при работе со списками. В памяти сохраняется сцена или алгоритм её рисования?
  • RzCoDer © (22.07.07 19:22) [11]
    списки это группы команд OGL сохраненные для дальнейшего исполнения) (c) редбук
  • @!!ex © (22.07.07 19:36) [12]
    > [11] RzCoDer ©   (22.07.07 19:22)

    Хм, вопрос в том, где сохраненные....
    По идееи если я записал в список отрисовку массива вершин, массив же будет хранится в памяти и изменение исходного массива на отрисовке списка не скажется... Или я не правлиьно понимаю списки?
  • AlexanderMS © (23.07.07 18:15) [13]
    Вообще, можно любые gl-процедуры вызывать между NewList и EndList? К примеру, glEnable? Или лучше это делать за пределами списка?
  • RzCoDer © (23.07.07 19:07) [14]

    > AlexanderMS ©   (23.07.07 18:15) [13]

    почти все, почитай на этот счёт редбук


    > @!!ex ©   (22.07.07 19:36) [12]

    имеешь в виду обычный array? разумееца потом можешь делать с ним что хочешь
  • Rial © (23.07.07 22:26) [15]
    > [3] @!!ex ©   (21.07.07 18:15)
    > Кстати. Какая разница между VBO и Списками по скорости?
    > Кто нить измерял??

    VBO будет работать быстрее намного.

    И вообще, если нужно вывести сцену всего 2 раза,
    то ни в коем случае использовать списки не рекомендую,
    т.к. время на создание списка уходит в 2-3 раза большее,
    чем на его отрисовку.
  • Yashin © (05.08.07 00:17) [16]
    на delphi3d.net видел сравнение всех видов списков на примере.
  • rts111 © (06.08.07 23:45) [17]
    > [3] @!!ex ©   (21.07.07 18:15)
    > Кстати. Какая разница между VBO и Списками по скорости?
    > Кто нить измерял??

    Я имерял, у меня списки как правило быстрее работают.
    Но разница незначительная, а чаще вообще разницы в скорости нет.

    Кстати, glDrawArrays работает быстрее glDrawElements.
    glDrawElements только иногда быстрее,
    если тяжелый шейдер и индексы оптимизированы для кеширования.
  • rts111 © (12.08.07 00:41) [18]
    Зачем вообще париться с VBO, когда всего "(14 Quads-ов)",
    обычные glBegin ... glEnd скорее всего, даже быстрее будет.
  • DeadMeat © (12.08.07 11:53) [19]
    Не большой тестик проводил.
    Рисовал простой плейн. Но много. Штук так 10 000.
    VBO конечно не стал юзать, т.к. у каждого плейна свои координаты и каждый двигается независимо. Т.е. отдельный объект.
    Проверял:
    glBegin/glEnd
    glNewList/glEndList
    glDrawArrays
    Быстрее всех оказался glBegin/glEnd
    Списки и массивы были медленее. ФПС при использовании списков падал на 10-20 пунктов. А при использовании массивов всего на 5-10.
    Т.е. если поликов мало, использование списков и массивов вершин не всегда оправдано.
 
Конференция "Игры" » Повторный вывод уже построенной сцены в OpenGL. [Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]