在启动osg程序时会确定使用什么线程模型
osgViewer/ViewBase.cpp
ViewerBase::ThreadingModel ViewerBase::suggestBestThreadingModel()
{
std::string str;
if (osg::getEnvVar("OSG_THREADING", str))
{
if (str=="SingleThreaded") return SingleThreaded;
else if (str=="CullDrawThreadPerContext") return CullDrawThreadPerContext;
else if (str=="DrawThreadPerContext") return DrawThreadPerContext;
else if (str=="CullThreadPerCameraDrawThreadPerContext") return CullThreadPerCameraDrawThreadPerContext;
}
Contexts contexts;
getContexts(contexts);
if (contexts.empty()) return SingleThreaded;
#if 0
// temporary hack to disable multi-threading under Windows till we find good solutions for
// cras