我正在尝试将自己投入到Libgdx OpenGL框架中。我曾经用来LwjglApplication创建一些简单的应用程序,这些应用程序可以渲染盒子,一些网格物体和一些纹理。我遇到了Aurelien Ribon的应用程序,该应用程序创建了刚性的Box2D实体。他使用LwjglCanvas来与Java的Swing集成。我尝试自己制作一个,JFrame然后创建了一个,然后添加了LwjglCanvas。然后将JFrame的默认操作设置为EXIT_ON_CLOSE。
LwjglApplication
LwjglCanvas
JFrame
EXIT_ON_CLOSE
但是,每次我关闭应用程序时,都会记录到控制台:
AL lib: alc_cleanup: 1 device not closed。
AL lib: alc_cleanup: 1 device not closed
我不知道这意味着什么,也没有对我造成任何伤害。我只想知道这是什么意思。根据LwjglCanvas文档:
All OpenGL calls are done on the EDT. This is slightly less efficient then a dedicated thread, but greatly simplifies synchronization. Note that you may need to call stop() or a Swing application may deadlock on System.exit due to how LWJGL and/or Swing deal with shutdown hooks.
我LwjglCanvas.stop()应该在哪里绑定,应该将其添加到EventDispatchThread队列还是应该将其绑定到JFrame.addWindowListener?
LwjglCanvas.stop()
EventDispatchThread
JFrame.addWindowListener
“ AL lib:alc_cleanup:1设备未关闭”的真正含义是什么?
非常感谢!
AL库是Libgdx(OpenAL变体之一)使用的“音频库”。
我相信此消息仅表示音频库正在为您清理一些(在您的情况下为一个)音频流/句柄。如果您在退出时看到此消息,则该消息无害,因为操作系统将清除所有资源。
如果您在退出前在内部清理音频,则该消息应消失。
alc_cleanup