Большую часть времени OpenGL будет обрабатывать свои собственные ошибки, просто игнорируя вызов с ошибкой, но есть несколько ошибок, которые могут привести к сбою вашего приложения.Единственные, с кем я когда-либо сталкивался, - это нарушения прав доступа и плохие драйверы.У меня такое ощущение, что это не вызов glDisable
(который может вызвать только ошибку GL_INVALID_ENUM
или GL_INVALID_OPERATION
, которую сам OpenGL обрабатывает с помощью glGetError
), а тот, что был до этого.
было бы неплохо взглянуть на код ошибки, но я собираюсь предположить, что это либо во время загрузки текстуры (glTexImage2D
), либо при вызове отрисовки (gl*Pointer
или glDraw*
).Если ваши переменные длины больше, чем память, которая фактически предназначена для текстуры / буфера, OpenGL все равно будет пытаться читать с этих адресов, и ОС должна выдать исключение нарушения доступа.Дважды проверьте эти переменные и помните, что все используют длину в байтах, кроме вызовов glDraw*
, которые используют количество элементов.
Если это не ваша проблема, то ваш вызов glDisable
является первым фактическим вызовом OpenGL, который выmake и ошибка в том, что JOGL не может найти opengl32.dll или libgl.so или какую-либо реализацию OpenGL в вашей ОС.В этом случае вам просто нужно установить соответствующие драйверы, и это будет работать.Иногда, если вы вызываете метод, который был представлен в OpenGL в версии, после которой ваш драйвер поддерживает, вы получите ту же ошибку.Вы можете проверить свою версию OpenGL с glGetString(GL_VERSION)
.