在我的 OpenSceneGraph 程序中,我有以下代码:
osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
if (!wsi) {
osg::notify(osg::NOTICE) << "Error, no WindowingSystemInterface available, cannot create windows." << std::endl;
return 0;
}
不幸的是,方法 getWindowingSystemInterface() 返回了一个空值,因此程序无法继续。它返回 null 的原因是什么?我如何更改我的程序(或build设置?)以让它返回非空值?我正在使用 Visual Studio 2012。
您可能在接口(interface)创建之前就对其进行了查询,因此它返回一个空值。如果您使用控制台窗口运行,请尝试将 OSG_NOTIFY_LEVEL 环境变量设置为 INFO 或 DEBUG,它会准确告诉您是否/何时设置窗口界面。
请参阅“设置”方法(无论如何来自 3.1.3 开发版本),如果您的通知级别为 INFO 或更高,它会执行打印:
void GraphicsContext::setWindowingSystemInterface(WindowingSystemInterface* callback)
{
ref_ptr<GraphicsContext::WindowingSystemInterface> &wsref = windowingSystemInterfaceRef();
wsref = callback;
OSG_INFO<<"GraphicsContext::setWindowingSystemInterface() "<<wsref.get()<<"\t"<<&wsref<<std::endl;
}
http://www.openscenegraph.com/index.php/documentation/debugging-tips
我是一名优秀的程序员,十分优秀!