![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
К сожалению, я не могу ответить на все вопросы, поскольку я лишь поверхностно изучал OpenGL и вскоре и вовсе понял что это не то, что мне нужно, и прекратил изучение данной технологии.
По поводу текста в OpenGL вообще нету встроенной поддержки, потому приходится извращаться разными способами, и они не позволяют выводить быстро изменяющийся текст в больших масштабах, что мне очень нужно. Поэтому советую по своим вопросам создавать отдельные темы - больше шансов что кто-нибудь ответит ![]() Естессно |
|||
|
||||
fomich0ff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.6.2009 Репутация: нет Всего: нет |
в любом случае большое спасибо ;)
|
|||
|
||||
ShellRaiser |
|
|||
![]() еще чуть и закоммичу ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 20.7.2007 Где: Белaрусь, Гродно Репутация: 1 Всего: 1 |
Anyone, я конечно понимаю что тема уже закрыта, но добавлю что отрисовывая списками ты нехило теряешь производительность, лучше отрисовывай массивами а ещё если их отрисовывать через VBO (Vertex Buffer Object). Он даст сильный прирост производительности при отрисовке сложных моделей (в плане количества полигонов)
темболее если у тебя видиокарта начиная от mx440 то всё должно поддерживаться =) Это сообщение отредактировал(а) ShellRaiser - 23.7.2009, 15:19 |
|||
|
||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
ShellRaiser,
Во-первых, от OpenGL я давно отказался в пользу WPF, потому я ничего не теряю в производительности ![]() Во-вторых, моя видяха/дрова не держат FBO и VBO. Это сообщение отредактировал(а) Anyone - 23.7.2009, 15:26 |
|||
|
||||
ShellRaiser |
|
|||
![]() еще чуть и закоммичу ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 20.7.2007 Где: Белaрусь, Гродно Репутация: 1 Всего: 1 |
Anyone, я просто видел что ктото советовал через списки выводить, и решил предложить пример по-лучше;)
а WPF на OpenGL основанна? или обёртка хорошая? ![]() |
|||
|
||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
||||
|
||||
ShellRaiser |
|
|||
![]() еще чуть и закоммичу ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 20.7.2007 Где: Белaрусь, Гродно Репутация: 1 Всего: 1 |
Спасибо, буду знать;)
|
|||
|
||||
VC15 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.8.2009 Репутация: нет Всего: нет |
Ну я бы сделал так:
Команды glPushMatrix и glPopMatrix очень полезны для таких вещей, которые тебе нужны.
Что значит быстрый способ? "Быстрый" - понятие относительное. Сразу могу ответить вот что. Если ты выводишь 3D-сцену, то ты задаёшь видимый объём командой glFrustum (или glOrtho, или gluPerspective). Можешь у себя в проге при выводе каждого примитива проверять, попадает ли он в видидмый объём. Правда эту же проверку осуществляет OpenGL, так что не знаю, что быстрее. Вообще, есть разные способы сокращения числа выводимых примитивов, я их не очень хорошо знаю. Мне приходилось пользоваться только отсечением по расстоянию. То есть ты считаешь расстояние от точки взгляда до выводимого примитива, и если оно больше некоторой константы, то не выводишь этот примитив. |
||||||
|
|||||||
fomich0ff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.6.2009 Репутация: нет Всего: нет |
VC15, спасибо.
У меня что-то типа векторного графического редактора. Назначение: проектирование схем трубопроводов. Там не надо 3D. Там все на плоскости. Так вот практически все графические объекты в течении своей жизни не меняются, а стало быть их удобно выводить в виде списка отображения (или дисплейного списка). Так вот я тестил производительность на 20000 полигонов. Если пробегать весь массив и тупо рисовать каждый полигон (независимо от того виден он или нет), то такой способ работает медленнее чем если выводить только те несколько сотен полигонов, которые видны. Так вот основная загвоздка заключается в том - как быстро выбрать из общего массива полигонов те, которые необходимо рисовать. Т.е. не тупым перебором, а спомощью какого-нить хитрого алгоритма. ;) Эту проблему я пока не решил. ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
fomich0ff, а какие условия выборки?
|
|||
|
||||
fomich0ff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.6.2009 Репутация: нет Всего: нет |
arilou, я, если честно, не очень понял, что от меня требуется =)
Вобщем у меня есть массив примитивов (допустим это произвольные полигоны). У каждого примитива есть прямоугольная область (в мировых координатах), в которую он вписан. Естественно известны всякие параметры типа цвет примитива, цвет его границы, толщина границы и т.д. Так вот я так думаю, что выбирать примитивы надо используя именно эту прямоугольную область. Вот только как это сделать не используя прямой перебор? Не знаю. Буквально минут 20 назад нашел статью про octree. Думаю попробовать. Может есть еще подобные алгоритмы? |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
fomich0ff, так тебе нужно определить, какие полигоны не попадают в экранную область? я бы держал список видимых объектов и обновлял его только когда меняется положение камеры.
а вообще, если полное 2Д -- зачем тогда OGL? |
|||
|
||||
fomich0ff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.6.2009 Репутация: нет Всего: нет |
Ну вобщем-то это я и пытаюсь сейчас реализовать с помощью octree. GDI/GDI+ работают медленно. Особенно когда сложная сцена с большим количеством полигонов с большим количеством вершин. Уже испытано. После долгих поисков/экспериментов остановился на OGL |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
так у тебя же плоский список и фактически 2D сцена? octree - это больше для 3D используют, когда глубина присутствует. например, в террейнах для оптимизации кол-ва полигонов и отсечении невидимых. т.е. в твоем случае, имхо, простой перебор по запросу вполне должен проканать. |
|||
|
||||
fomich0ff |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 19.6.2009 Репутация: нет Всего: нет |
arilou, должен, но не канает - медленно =(
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |