私は JOGL でゲームを作成していますが、私の人生では理解できないエラーに遭遇しました。
ゲームでは、2 つの GLCanvases (実際には GLJpanels) を使用しています。1 つはメニュー用で、もう 1 つは実際のゲーム用です。ゲームがメニューから開始されると、メニュー GLCanvas がゲームウィンドウから削除され、ゲーム GLCanvas と交換されるという考え方です。これまでのところ、メニューはほぼ完璧に動作するようになっていますが、ゲーム キャンバスに切り替えようとすると、次のエラーが発生します。
Catched Exception on thread AWT-EventQueue-0
javax.media.opengl.GLException: AWT-EventQueue-0: Context not current on thread, obj 0x2ab44e2d, ctx 0x0, surf 0x0, inDestruction: false, <53f7c06e, 2e7aa0d3>[count 0, qsz 0, owner <NULL>]
キャンバスを切り替えるために使用しているコードは次のとおりです。
public void start()
{
canvas.addGLEventListener(this);
animator.start();
window.add(canvas);
canvas.requestFocus();
}
public void stop()
{
window.remove(canvas);
animator.stop();
canvas.removeGLEventListener(this);
}
およびスイッチ機能:
public void switchToCanvas(String canvasName)
{
currentCanvas = canvasName;
if(canvasName.equals("GameCanvas"))
{
menu.stop();
game.start();
}
else
{
game.stop();
menu.start();
}
}
私はいくつかのグーグルを行って、この質問を回避しました:どうすれば独自のopenGLコンテキストを作成してGLCanvasにバインドできますか?
しかし、そこに投稿された解決策はどれもうまくいきませんでした。