我想从我写的一些opengl代码创建一个地图:
为了做到这一点,我虽然拍摄了gl屏幕上方的屏幕截图。 然而,我似乎无法找到如何做到这一点......
有什么建议吗?
答案 0 :(得分:-1)
OSG example code here已解决类似问题。
首先,您需要设置视图,以便从TOP VIEW中查看中心。
osg::Vec3 center = scene->getBound().center();
double radius = scene->getBound().radius();
view->getCamera()->setViewMatrixAsLookAt( center - lookDir*(radius*3.0), center, up );
view->getCamera()->setProjectionMatrixAsPerspective(
30.0f, static_cast<double>(width)/static_cast<double>(height), 1.0f, 10000.0f );
然后,您需要使用某些特定于操作系统的API来执行与logic below类似的操作:
osgViewer::ScreenCaptureHandler* scrn = new osgViewer::ScreenCaptureHandler();
osgViewer::ScreenCaptureHandler::WriteToFile* captureOper = new osgViewer::ScreenCaptureHandler::WriteToFile(tmpStr.m_szBuffer, "png");
scrn->setCaptureOperation(captureOper);
scrn->captureNextFrame(*_viewer);
_viewer->frame();
当然,如果您不使用OSG,那么您需要找到相同的API(您正在使用的库)才能完成相同的任务。