Нет текущего контекста OpenGL в этом потоке на javax.media.opengl.glu.GLU.getCurrentGL

Я столкнулся с похожей проблемой, когда начал изучать Opengl (JOGL) для "GL2 gl" несколько месяцев назад.... и затем я обнаружил, как решить (все, что имеет какое-то отношение к "gl", должно вызываться из дисплея/ метод инициализации).

Через какое-то время мне также пришлось использовать "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)


person elect    schedule 31.07.2012    source источник


Ответы (1)


Я попытался переместить getContext и makeCurrent непосредственно перед glu.gluOrtho2D, и это сработало.

person elect    schedule 21.08.2012