Нет контекста OpenGL в этой теме на javax.media.opengl.glu.GLU.getCurrentGL
Я столкнулся с подобной проблемой, когда начал изучать Opengl (JOGL) для "GL2 gl" несколько месяцев назад.... и затем я обнаружил, как решить (все, что связано с "gl", должно вызываться из дисплея / метод init).
Через некоторое время мне также понадобилось использовать "GLU glu" (для gluOrtho2D). Поэтому эта проблема возникла снова. Но допустим, что это не было такой большой проблемой, потому что программа работала нормально, несмотря на эту ошибку.
К сожалению, похоже, что сейчас эта проблема имеет некоторые раздражающие эффекты... поэтому я действительно хотел бы ее решить.
Вот некоторый код:
...
GLU glu = new GLU();
public void display(GLAutoDrawable gLAutoDrawable) {
...
// map a 2D bild width*height on OpenGL
glu.gluOrtho2D(-width/2, (width+1)/2, -(height+1)/2, height/2);
}
Самое смешное, что:
У меня есть другие вызовы glu на дисплее, например "glu.gluLookAt(0, 0, 1, 0, 0, 0, 0, -1, 0);" и у меня там никогда не было проблем
Это происходит только когда я вызываю обновление из другого потока ("glcanvas.display")
Я уже сделал много попыток, таких как инициализация его каждый раз на дисплее или форсирование контекста с помощью:
glu = new GLU(); gLContext = gLCanvas.getContext(); gLContext.makeCurrent();
но пока ничего не получалось
Исключение в потоке "AWT-EventQueue-0" javax.media.opengl.GLException: в этом потоке нет контекста OpenGL в javax.media.opengl.glu.GLU.getCurrentGL(GLU.java:175) в javax.media.opengl.glu.GLU.gluOrtho2D(GLU.java:1344)
1 ответ
Я попытался переместить getContext и makeCurrent как раз перед glu.gluOrtho2D, и это сработало.