2014-01-31 3 views
2

Я видел OpenGL коды, написанные так:OpenGL числовое значение Метод

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(1,1,1,1,1,-1); 
glMatrixMode(GL_MODELVIEW); 

и я видел OpenGL коды, написанные так:

glEnable(2896); 
glDisable(3042); 

Обратите внимание на числовые значения в glEnable() и glDisable() методов ,

Мой настоящий вопрос: есть ли у кого-нибудь ссылка на сайт, который имеет список каждого метода или какое числовое значение соответствует любому режиму, который вы вводите в код? Например, что означает glEnable(2896);?

+3

Тот, кто написал код, используя эти магические числа, должен быть снят. По крайней мере, используйте значения base-16, чтобы вы могли просмотреть перечисление по значению. –

+2

@ AndonM.Coleman: Съемка этого парня далека от доброго ИМХО. Я открыт для предложений по более жестким наказаниям. – datenwolf

+2

@ datenwolf: Труба рендеринга человека? – genpfault

ответ

3

Имена перечислений и ценности живут в gl.xml, от главной spec registry page.

Учитывая ваш пример из glEnable(2896):

  1. 2896 в гекс 0x0B50
  2. Поиск gl.xml для значения земли вас на

    <enum value="0x0B50" name="GL_LIGHTING"/>

  3. Что вы можете увидеть, соответствует до GL_LIGHTING

2

Цифры - это числовые значения для токенов OpenGL, как определено в спецификации OpenGL. Вы можете найти спецификации для различных версий OpenGL в

Определения для токенов записываются в форме, используемой компилятором C или C++ в файле заголовка GL/gl.h.

Однако настоятельно не рекомендуется использовать числовые значения, поскольку в коде они являются просто магическими числами.

Вроде, что делает glEnable (2896); на самом деле означает?

Просто найдите GL/gl.h для токена, который определен для этого значения. Они обычно записываются в шестнадцатеричном виде, поэтому сначала нужно преобразовать это десятичное представление. Как это (используя * Nix стиль оболочки):

dw ~ % grep $(printf '%X' 2896) /usr/include/GL/gl.h 
#define GL_LIGHTING        0x0B50 
Смежные вопросы