Я использую Qt 5.11.2 / osgEarth 2.9.0.
Когда я пытаюсь запустить приведенный ниже код, я получаю сообщение об ошибке:
Невозможно сделать QOpenGLContext текущим в другом потоке
Я пытался найти решение в Интернете, но нашел только похожие ситуации, когда люди просто переписывали часть своего кода, даже без osgEarth. Но если вы удалите вывод Qt из моего кода (последние 2 строки)), все работает хорошо, из чего я заключил, что проблема не в моем коде. Может я забыл установить какой-нибудь пакет? Или неправильно установил?
Код:
Viewer *viewer = new Viewer();
EarthManipulator *manipulator = new EarthManipulator();
viewer->setLightingMode(osg::View::NO_LIGHT);
viewer->getCamera()->setSmallFeatureCullingPixelSize(-1.0f);
viewer->setCameraManipulator(manipulator);
Map map = new Map();
MapNode mapnode = new MapNode(map);
Drivers::XYZOptions xyz;
xyz.url() = "http://[abc].tile.openstreetmap.org/{z}/{x}/{y}.png";
xyz.profile()->namedProfile() = "spherical-mercator";
ImageLayer* imageLayer = new ImageLayer("OSM", xyz);
map->addLayer(imageLayer);
viewer->setSceneData(mapnode);
MapNodeHelper().configureView(viewer);
QWidget *viewerWidget = new ViewerWidget(viewer);
layout->addWidget(viewerWidget);
Задача ещё не решена.
Других решений пока нет …