Передача параметров в списки отображения OpenGL - PullRequest
0 голосов
/ 25 апреля 2011

Мне было интересно, есть ли какой-нибудь способ (стандартный или хитрый трюк) для передачи параметров в список отображения OpenGL.Позвольте мне показать пример, чтобы уточнить, что я имею в виду.

Предположим, у нас есть следующий код:

GLuint l = glGenLists(1);
glNewList(l, GL_COMPILE);
  // ...some OpenGL function calls
  glBindTexture(GL_TEXTURE_2D, some_texture); // <-- here, I want `some_texture' to be a parameter that I can set when calling the display list
  //...some more stuff...
glEndList();

Есть ли способ выполнить то, что я хочу?

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Ну, да, связанная текстура является глобальным состоянием, и если вы связываете текстуру, а затем вызываете список отображения, текстура все равно должна быть связана при выполнении списка.

Но лучше прекратить использовать отображениесписки и использовать VA / VBO, я рекомендую их!

0 голосов
/ 25 апреля 2011

Это не сработает.Внимательно прочитайте и спецификацию, и часто задаваемые вопросы, в частности:

GL может быть проинструктирован обрабатывать определенный список отображения (возможно, многократно), предоставляя номер, который его уникально определяет.Это приводит к тому, что команды в списке выполняются так же, как если бы они были заданы нормально.Единственное исключение относится к командам, которые зависят от состояния клиента. Когда такая команда накапливается в списке отображения (то есть при выдаче, а не при выполнении), к ней применяется состояние клиента, действующее в то время.

16.010 Почему список отображения занимает так много памяти? Список отображения OpenGL должен создать копию всех данных, необходимых для воссоздания последовательности вызовов, которая его создала.

Другими словами,если вы планируете изменить хранилище данных текстуры позже, это не будет иметь значения , потому что OpenGL сохраняет свою собственную копию, чтобы гарантировать, что он может точно воспроизводить то, что было текущим состоянием.

Единственноеспособ получить некоторую разновидность изменчивости в списках отображения - через вложенную уловку отображения, но, как уже предложил Матиас Вальденегро, вам вообще не следует использовать списки отображения, если вы можете помочь этому.Другие функции (например, VBO) являются более гибкими и имеют такую ​​же или лучшую производительность.

...