Вопросы о Показать список OpenGL SC 1.0.1 - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть несколько вопросов о списках отображения в OpenGL SC 1.0.1:

  1. , если я правильно понимаю, список отображения сохраняет последовательность команд примитивов OpenGL, которые могут быть повторно использованы послево время выполнения. Теперь предположим, что я также включил в этот список отображения назначение, которое изменяет значение параметра, объявленного вне статической последовательности. -> Будет ли обновляться этот параметр во время генерации списка отображения или когда этот список отображения будет вызываться во время выполнения?

  2. , который я использую для создания всех моих списков отображения при инициализациитолько контекст OpenGL. Но в моем приложении по нескольким причинам я выполняю glClear на каждом цикле во время выполнения. -> Считаете ли вы, что после команды glClear все мои списки отображения удалены? Потому что при этом я замечаю, что мои графические компоненты, созданные с помощью списков отображения, никогда не рисуются.

1 Ответ

0 голосов
/ 01 октября 2019

Списки отображения создаются один раз, именно в тот момент, когда вы вызываете glNewList. Этот список затем повторяется дословно, когда вы вызываете glCallList. Я не уверен, что именно вы подразумеваете под параметром, но если вы имеете в виду:

a) переменная C ++, то это не будет иметь никакого эффекта. Вызовы OpenGL в списке отображения записываются как есть. Какие переменные цикла и т. Д. Используются для получения этого вызова, не записываются. б) переменная состояния OpenGL (например, вызов для включения GL_LIGHTING). Это будет записано (так как список отображения будет захватывать вызов glEnable).

glClear не влияет на списки отображения. glClear просто очищает задний буфер до черного (или цвет, который вы устанавливаете через glClearColor)Очевидно, что после того, как вы очистили все данные пикселей, вам нужно будет перерисовать их снова, поэтому вам нужно будет установить матрицу проекции, установить правильную матрицу преобразования для вашей геометрии в списке отображения и снова вызвать glCallList, чтобы повторитьсписок действий в этом списке.

Сказав все это, я настоятельно рекомендую избегать отображения списков отображения и перейти к чему-то более приятному (например, VBO + VAO + GLSL-шейдеры или VBO + конвейер с фиксированными функциями). Списки отображения имеют большое количество проблем, в том числе:

  • Это кошмар для сопровождающих водителей. В результате поддержка видеокарт для них - немного смешанная сумка.
  • Не все методы GL API допустимы для вызова в списке отображения. Некоторые методы (например, те, которые изменяют состояние клиента - например, привязки к массиву вершин) просто не работают в списках отображения. Другие не работают просто потому, что разработчики драйверов решили не добавлять поддержку (например, NVidia позволяет вызывать некоторые методы GL3 + в списке отображения, AMD допускает только методы из OpenGL 1.5).
  • Обновление списка отображения мучительно медленно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...