Java OpenGL - com.jogamp.opengl.util.Animator истекло время ожидания - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю над проектом, в котором используется инструмент NASA WorldWind . Этот инструмент использует OpenGL для отображения 3D-изображения Земли. Этот 3D-шар используется для отображения некоторых данных. В настоящее время я добавляю окно настроек, чтобы пользователь мог контролировать отображаемое изображение, поэтому каждый раз, когда пользователь заходит в настройки, мне приходится обновлять sh вид. Вот как я это делаю:

// Stop the Animator while we setup the world
this.animator.pause();

SceneController sc = world.getSceneController();

if (world.getModel() != null) {
    // Dispose the existing layers to replace them with new ones
}

// Clear input handlers
world.getInputHandler().clearList();
world.clearList();

// Set the Lighting model.
sc.getDrawContext().setStandardLightingModel(new ArdorLightingModel());

// Create Standard model
final Model model = (Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);
world.setModel(model);

// Create Round/Flat Globe
roundGlobe = model.getGlobe();
flatActive = false;
flatGlobe = new EarthFlat();


ZeroElevationModel elevationModel = new ZeroElevationModel();
roundGlobe.setElevationModel(elevationModel);
flatGlobe.setElevationModel(elevationModel);

// ...
// More code to add a menu on top of Worlwind, etc.
// ...

//Restart the animator
this.animator.resume();

Я использую тот же метод, чтобы создать мир, когда приложение запускается и проблем нет. Но когда я использую его для обновления sh вида, я получаю следующее исключение:

finishLifecycleAction(com.jogamp.opengl.util.Animator$3): ++++++ timeout reached ++++++ main
finishLifecycleAction(com.jogamp.opengl.util.Animator$3): OK false- pollPeriod 1000, blocking true, waited 1001/1000 - main
 - com.jogamp.opengl.util.Animator[started true, animating true, paused true, drawable 1, totals[dt 0, frames 93365, fps 0.0], modeBits 1, init'ed true, animThread Thread[main-AWTAnimator,5,main], exclCtxThread false(null)]
java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Thread.java:1336)
    at com.jogamp.opengl.util.AnimatorBase.finishLifecycleAction(AnimatorBase.java:552)
    at com.jogamp.opengl.util.Animator.pause(Animator.java:292)
    ...

И самое худшее, что ... это работает! Представление обновляется, как и ожидалось, но консоль все еще показывает эту ошибку. Я попытался Google эту ошибку, но большинство людей, имеющих ее, используют MacOS (у меня Windows 10).

Единственное решение, которое я нашел, состояло в том, чтобы заменить animator.pause() и animator.resume() на animator.stop() и animator.start(), но я боюсь, что это вызовет у меня некоторые проблемы позже в проекте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...