вывод большого количества сфер в OpenGL

Тема в разделе "WASM.UNIX", создана пользователем fastmod, 6 авг 2007.

  1. fastmod

    fastmod New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2007
    Сообщения:
    7
    Всем здрасти!
    Проблема в следующем. Необходимо вывести большое количество сфер (40.000 и больше). Я для этого использую дисплейные списки. Сферы рисую quadric-объектом.
    При количестве сфер 20.000, картинка тормозит при поворотах и масштабировании. А если вместо сфер рисовать жирные точки то где-то при 50.000 начинает тормозить.
    Пользуюсь OpenGL, Linux KDE, Qt 3, C++.
    Меня интрисует:
    1. Слышал вроде есть альтернатива дисплейным спискам, более быстрая. Немогу найти материал, дайте какие-нибудь ссылки если есть. Много ли придется переделывать применяя это что-то другое?
    2. Может кто-нибудь подскажет другой способ рисования сфер.
    Заранее спасибо!
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    fastmod
    VBO. В принципе если всё поместится в видеопамять то скорость будет большой. 40.000 * ( 128 треугольников на сферу) * (3 вершины) * (3 координаты + 1 на цвет) * ( 4* байт ) = ~256 mb. Так что делай выводы.

    И сколько у тебя треугольников на сферу. И они все у тебя всегда рисуются? Можно посмотреть в сторону отбрасывания невидимой геометрии, а также уменьшения детализации при увеличении расстояния от точки наблюдения.
     
  3. fastmod

    fastmod New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2007
    Сообщения:
    7
    Дело в том что сферу рисую quadric'ом, а не треугольниками. А относительно VBO: в буфер можно занести координаты центров сфер (вершины), но как рисовать тогда сферы?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    fastmod
    Это ещё зачем?
    А в чём проблема рисовать трианглами, ну или квадратами на худой конец (хотя это и не верно). Зачем использовать тормознутые фичи? В VBO надо заносить всю геометрию (вершины, индексы). А потом по шине гонять только диапазоны индексов. Можно ещё попробовать забить несколько сфер в буфер, а потом их отрисовывать, меняя только их положение, это сэкономит уйму видео памяти, но будет помедленнее. Это будет подобно тому как ты рисовал жирные точки, и тут можно менять степень детализации, в зависимости от расстояния точки наблюдения.