Как мне прочитать константу openGL моей системы

Ошибка открытого GL, которую я получаю, похоже, связана с ошибкой MAX_VERTEX_UNIFORM_COMPONENTS_ARB. (как предложено в ответе здесь

Что определяет эту константу (графическое оборудование, графический драйвер, версия openGL?) и как я могу проверить ее значение в Linux (оборудование nvidia)?


person sayanel    schedule 21.05.2021    source источник


Ответы (1)


Это ограничение связано с используемым gfx HW и его драйвером. В OpenGL вы можете получить такие значения на стороне процессора, используя это:

GLint x;
glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB,&x);

В моей настройке:

Vendor: NVIDIA Corporation
OpenGL 4.5.0 NVIDIA 368.22
Render: GeForce GTX 550 Ti/PCIe/SSE2

он возвращает:

max vertex uniform components: 4096

Чтобы использовать это, вам нужен работающий контекст OpenGL 1.0 или выше и знание числового значения запрашиваемого материала. Обычно это хранится в gl.h или glext.h, в вашем случае это последнее, и если вы не хотите включать glext.h, просто добавьте это в свой код (C++) перед использованием:

#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
person Spektre    schedule 21.05.2021
comment
Это код С++? Можете ли вы предоставить полную программу и включает в себя необходимое? - person sayanel; 21.05.2021
comment
@sayanel Вам нужен контекст OpenGL. У меня нет примеров для Linux, так как у меня есть только для Windows это самый простой. Однако единственное, что вам нужно, это контекст OpenGL 1.0 и запрошенный идентификатор константы из glext.h, поэтому либо включите его, либо просто используйте вместо него #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A. Если вы не знаете, как создать контекст GL, используйте какую-нибудь библиотеку, например GLUT, или погуглите учебник по OpenGL для Linux. Да, код написан на C++, однако, как вы можете видеть, GLint относится к типу OpenGL, и в нем нет кода, только один вызов функции OpenGL. - person Spektre; 21.05.2021
comment
@sayanel вот мой полный пример GL+GLSL+VAO/VBO C++ со всеми расширениями GL (с использованием GLEW) и включает . Разница между Windows и Linux будет в функции, начинающейся с префикса wgl... Скорее всего они будут называться одинаково с теми же параметрами только с другим префиксом Бьюсь об заклад glX... - person Spektre; 21.05.2021
comment
@sayanel Также, если вам нужна дополнительная информация о gfx и OpenGL, см. размер 3D-текстуры, влияющий на вывод программы без возникновения ошибок как некоторые материал получается с разными функциями GL - person Spektre; 21.05.2021