В чем разница между glEnable и glEnableClientState? - PullRequest
5 голосов
/ 14 октября 2011

В чем разница между glEnable и glEnableClientState?Каждый раз, когда мне нужен установленный / неустановленный режим, я должен смотреть на ссылку, чтобы узнать, кто из них примет ее.Есть ли какое-то общее правило, которое гласит, в какие режимы входит какой?

Ответы [ 3 ]

7 голосов
/ 14 октября 2011

В дополнение к ответу Тибура на практике единственное использование glEnableClientState и glDisableClientState - для включения / выключения встроенных массивов атрибутов с фиксированной функцией (например, GL_VERTEX_ARRAY, GL_NORMAL_ARRAY, ...).Для всех остальных состояний вы используете glEnable и glDisable (или glEnableVertexAttribArray и glDisableVertexAttribArray для общих атрибутов вершинного шейдера).

3 голосов
/ 14 октября 2011

glEnable используется для набора состояний, который определил ARB OpenGL, представляющего внутреннее состояние драйвера. glEnableClientState для состояния, которое представляет информацию, которую вы более непосредственно контролируете. Единственным состоянием клиента, которое существовало для включения / выключения, были старые состояния массива вершин. И они были заменены на glEnable/DisableVertexAttribArray.

Различие на самом деле совершенно бессмысленно, поскольку водитель все еще управляет всем этим состоянием.

2 голосов
/ 14 октября 2011

glEnable на стороне сервера, а glEnableClientState на стороне клиента.Думайте на стороне сервера как на своем процессоре, а на стороне клиента как на своем графическом процессоре.Глобально, только вершинные массивы находятся на стороне клиента.

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