Próbuję zaangażować się w ramy OpenGL Libgdx. Użyłem LwjglApplication
do tworzenia prostych aplikacji do renderowania pudełek, niektórych siatek i niektórych tekstur. Natknąłem się na aplikację Aurelien Ribon, która tworzy sztywne ciała Box2D. Użył LwjglCanvas
do integracji z Java Swing. Próbowałem zrobić to sam, stworzyłem JFrame
, a następnie dodałem LwjglCanvas
. Następnie ustaw domyślną operację JFrame
na blisko EXIT_ON_CLOSE
.Co oznacza "AL lib: alc_cleanup: 1 urządzenie nie zamknięte"?
Jednak za każdym razem zamknąć aplikację, to logi na konsolę:
AL lib: alc_cleanup: 1 device not closed
.
Nie wiem, co to znaczy i nie wyrządza mi to żadnej szkody. Chcę tylko wiedzieć, co to znaczy. Według LwjglCanvas
docs:
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.
Gdzie należy wiązać LwjglCanvas.stop()
, należy dodać go do kolejki EventDispatchThread
lub powinny wiążę go do JFrame.addWindowListener
?
Co naprawdę oznacza "AL lib: alc_cleanup: 1 device not closed"?
Wielkie dzięki!
Rozumiem. Tak więc wiadomość nie ma nic wspólnego z wątkiem wysyłki zdarzeń w Java Swing. Dlaczego komunikat nie jest obecny podczas zamykania aplikacji LibgdxApplication? – nagloan
Być może 'alc_cleanup' nie jest wywoływany w niektórych ścieżkach wyjścia aplikacji (np. Jeśli wywołane zostanie' System.exit() ',' alc_cleanup' nie zostanie wywołane. –
Dzięki za wyjaśnienie i za odniesienie do kodu. dla mnie – nagloan