У меня есть класс GameScreen
, который отображает мою игру. но прежде чем начать рендеринг игры, необходимо прочитать файлы и инициализировать их, что требует много времени.
Поэтому мне нужно показать/рендерить другой класс Screen
с именем LoadingScreen
, чтобы потратить некоторое время и одновременно прочитать мои файлы и выполнить процесс инициализации для моего GameScreen
, а после завершения инициализации изменить экран, вызвав setScreen(gameScreen)
.
Мне нужно использовать поток для выполнения этой параллельной работы, теперь проблема в том, что если я использую поток для чтения файлов и инициализации; При переключении на GameScreen
openGl выдает мне эту ошибку:
javax.media.opengl.GLException: Error: no OpenGL buffer object appears to be bound to target 0x8892
at com.sun.opengl.impl.GLBufferSizeTracker.setBufferSize(GLBufferSizeTracker.java:118)
Я знаю, что не оба потока одновременно используют графические ресурсы.
Я обнаружил, что проблема связана с Mesh
es. Эта ошибка возникает при инициализации Mesh в потоке инициализатора и рендеринге в основном потоке. Но я не знаю, как это решить.
У вас есть идеи по решению этой проблемы?