В glGertexPointer OpenGL (при использовании VBO) почему бы просто не установить его последний параметр на ноль? - PullRequest
0 голосов
/ 25 декабря 2011

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

glVertexPointer( 3, GL_FLOAT, 0, (char *) NULL ); 

... а не просто так ...

glVertexPointer( 3, GL_FLOAT, 0, 0); 

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

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Но если есть причина не просто использовать ноль, то почему?

Недостаток понимания языка программирования Си. В C нулевой указатель 0, базовый макрос -

#define NULL 0

Там нет трансляции типов.

Также не определено, что произойдет, если вы приведете некоторое число (это не результат приведения указателя на intptr_t) к указателю. Фактически вы обманываете компилятор. Я объяснил детали здесь:

https://stackoverflow.com/a/8284829/524368

0 голосов
/ 25 декабря 2011

Просто чтобы прояснить (для читателя), что это указатель.

Существует множество параметров для вызовов openGL, которые часто равны нулю, поэтому он просто делает его немного понятнее для чтения, если3 или 4 нуля подряд

...