|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2013, 21:17 | #1 |
Пользователь
Регистрация: 02.04.2013
Сообщений: 51
|
OpenGL, экранные списки
Здравствуйте. Возникли некоторые вопросы, связанные с использованием экранных списков в OpenGL. Одни говорят, что они значительно ускоряют вывод графики, потому что 'Нарисовать 10 раз один объект медленнее, чем один раз нарисовать 10 объектов', другие же - что 'На глаз ускорение от использования экранных списков заметить практически невозможно'. Кому верить? Ускоряет ли использование экранных списков вывод графики?
И второй вопрос: как быть, если в программе есть множество однотипных объектов, которые все время меняют свое положение? К примеру, двигающийся по экрану текст. Насколько я знаю, экранные списки не работают с переменными. То есть, нельзя один раз нарисовать весь текст в начале работы программы (даже если сам текст меняться не будет) и затем вызывать этот список, меняя лишь позицию каждой буквы. Вообще, каков алгоритм работы с экранными списками? |
04.05.2013, 21:26 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)экранные списки точно не медленнее обычных вызовов, а обычно быстрее(ток не применяйте их ради трех точек), см красную книгу OpenGL(OPenGL Red Book)
2)смещение матрицами никто не отменял Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.05.2013, 21:52 | #3 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Если один из самых распространенных вариантов использования дисплейных списков - именно вывод текста, то почему его нельзя сделать дисплейным списком. Только если Вам нужен вывод неизменного фрагмента текста, может, лучше заготовить его сразу в виде единой текстуры и выводить как один квад, а не как кучу квадов-символов? |
|
04.05.2013, 22:25 | #4 |
Пользователь
Регистрация: 02.04.2013
Сообщений: 51
|
s-andriano, дело даже не в тексте, просто думаю, как и зачем используются эти самые экранные списки. Неужели, ради пары команд между 'glBegin();' и 'glEnd();', где указываются координаты рисуемой текстуры?
К примеру, если есть простая 2D-стратегия со множеством боевых единиц на экране, то, как я понимаю, для рисования их лучше использовать экранный список? У каждой боевой единицы есть номер графической модели (набора кадров анимации), используемой для ее отображения. У каждой графической модели - множество кадров. То есть, даже простой объект уже представлен различными графическими образами. Даже один и тот же объект каждую секунду на экране выглядит по-своему. Таким образом, и 'glBindTexture();' в этот список не внесешь. Тогда что же, создавать по списку на каждую текстуру, используемую в игре? Или я все не так понял? |
04.05.2013, 22:57 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
прямоугольник это слишком банально для списка, шестиугольник итого мало.
тут речь о 3Д фигурах в основном(или сложные двухмерные контуры), например возьмем модель танка, вот её целиком можно внести в список. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
05.05.2013, 12:10 | #6 | |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Экранные заставки | Mels | Помощь студентам | 0 | 09.03.2012 23:05 |
Дисплейные списки OpenGL и видеокарта. | Я_и | Мультимедиа в Delphi | 1 | 24.10.2010 22:21 |
Перевод "пространственных" координат в "экранные" , смена перспективы , вращение. | vedro-compota | Общие вопросы Delphi | 6 | 08.06.2010 21:59 |
Экранные формы Delphi | Artesmann | Помощь студентам | 0 | 05.06.2008 17:33 |