Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2014, 19:15   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Работа с VBO(OpenGL). Оптимизация

Обращаюсь к знатокам VBO. Допустим я загружаю в буфер координаты круга(2D), которых больше сотни в таком формате: координата края, координата цента, координата края, координата центра и т.д. Если отдать их GL_TRIANGLE_STRIP, то получится окружность. Все это является планетой на которой могут быть постройки и т.п. вещи. Эта планета должна вращаться. Таким же макаром я изображаю космические корабли. Координаты всех и вся находятся в памяти видеокарты. Берем космический корабль и передвигаем его, предположим, на 1 метр вверх. В GL координатах это +0.01. Ради интереса представим, что он состоит из большого числа полигонов. Что будет быстрее работать glTranslatef() или перезаливка информации в буфер? А если под капотом собственный физический движок которому необходимы координаты этих тел?

P.S. У меня на этот счет имеются мысли, однако хочется услышать мнение бывалых OpenGl'ников

P.P.S. Забыл спросить, адекватен ли описанный выше алгоритм изображения круглых объектов или есть вариант с меньшим использованием ресурсов?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 21.07.2014, 21:17   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

всегда и везде пересылка данных/запись в память самая медленная операция. поэтому оптимизация это в первую очередь сокращение количества операций с памятью и в последнюю очередь сокращение кол-ва вычислительных операций.
в плане отрисовки объектов состоящих из большого кол-ва треугольников при минимуме вершин на входе конвейера достаточно большую пользу можно извлечь от использования геометрического шейдера, на мой взгляд.

Последний раз редактировалось f.hump; 21.07.2014 в 21:34.
f.hump вне форума Ответить с цитированием
Старый 22.07.2014, 11:18   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

И все-таки, как лучше выполнять движение объекта? Трансформировать матрицу или есть какие-то другие способы? Загружать новые координаты в видеопамять довольно глупо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 22.07.2014, 21:43   #4
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

в целом, изменение кординат вершин описывается некоторой матрицей 4х4.
выбор тут особо не велик, просчитать матрицу преобразования, пересчитать координаты вершин на CPU и переслать результат на видиокарту, либо переслать матрицу на видиокарту и пересчитать координаты на видеокарте. в принципе, по личному опыту, при кол-ве вершин меньше 20 тысяч и правильной организации координат вершин в памяти можно весь счет делать на CPU.
и в целом, довольно часто лишь небольшая часть елементов сцены меняет свои координаты, поэтому их удобно пересчитывать на CPU и проводить выборочное обновление буфера координат (glBufferSubData).
повороты камеры, однозначно, делать только на видеокарте.
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBO VAO и несколько GL_ELEMENT_ARRAY_BUFFER gunsoy Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 12.02.2014 12:36
Работа с Opengl Алексей_Warm Фриланс 1 23.12.2012 16:28
Работа с opengl Алексей_Warm Помощь студентам 0 22.12.2012 17:31
VBO OpenGL jec Общие вопросы C/C++ 1 05.10.2010 03:14
Работа с TXMLDocument, оптимизация кода, тонкости работы Alter Общие вопросы Delphi 2 05.07.2010 11:15