glEnableClientState и glEnableVertexAttribArray - PullRequest
7 голосов
/ 12 января 2012

Неужели последние осуждают первое?

Я пишу код, который хотел бы работать на оборудовании шейдера 2.0, но я хочу использовать более поздние соглашения по программированию, такие как VAO.

Поэтому я использовал функции glVertexAttribPointer вместо glVertexPointer, glNormalPointer, glColorPointer и так далее.

Кажется, что мы подошли к моменту, когда концепция сервер-клиент не ... особенно актуальна (правка: я имел в виду, что это относится к состоянию переключения для этих указателей буфера).Но я хотел бы знать, что на самом деле делает старый En/DisableClientState и как он связан с тем, что на самом деле делает glEnableVertexAttribArray.

И у меня также нет графического оборудования от 5 поколений назад, но наверняка некоторые пользователи моего программного обеспечения могут.Как я могу предотвратить предотвращение компиляции моего кода, например, на Radeon 9700?(Хотя я надеюсь, что если у пользователя есть последний драйвер, он может поддерживать новый материал)

1 Ответ

9 голосов
/ 12 января 2012

Кажется, что мы подошли к моменту, когда концепция сервер-клиент не ... особенно актуальна

На самом деле это очень актуально. Вся терминология объектов буфера в терминах сервера и клиента. Буферы находятся на стороне сервера, и клиент просто выдает команды рисования, ссылаясь на буферы на стороне сервера.

Основная причина замены glEnableClientState на glEnableVertexAttribArray состоит в том, что, поскольку OpenGL-3 всегда использует массивы вершин (больше нет непосредственного режима), и различие, если данные относятся к стороне клиента или сервера, определяется состояниями привязки: различные слоты буферных объектов. Если буферный объект 0 связан, данные на стороне клиента, если связанный буферный объект ненулевой, это сторона сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...