我正在使用Qt 5.11.2 / osgEarth 2.9.0。
当我尝试运行下面的代码时,出现错误:
无法使QOpenGLContext在其他线程中成为当前
我试图在Internet上找到一个解决方案,但是只发现了类似的情况,即使没有osgEarth,人们也只是在重写他们的一些代码。但是,如果您从我的代码中删除了Qt输出(最后两行),则一切正常,由此得出的结论是问题不在我的代码中。也许我忘了安装一些软件包?还是安装不正确?
代码:
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);