Replaced getenv calls with safer osg::getEnvVar usage
This commit is contained in:
parent
338b0e2b7b
commit
239b0faa4c
@ -16,6 +16,7 @@
|
||||
#include <osg/Math>
|
||||
#include <osg/Notify>
|
||||
#include <osg/GL>
|
||||
#include <osg/EnvVar>
|
||||
#include <osg/ref_ptr>
|
||||
|
||||
#include <algorithm>
|
||||
@ -391,222 +392,182 @@ static ApplicationUsageProxy DisplaySetting_e33(ApplicationUsage::ENVIRONMENTAL_
|
||||
|
||||
void DisplaySettings::readEnvironmentalVariables()
|
||||
{
|
||||
const char* ptr = 0;
|
||||
|
||||
if ((ptr = getenv("OSG_DISPLAY_TYPE")) != 0)
|
||||
std::string value;
|
||||
if (getEnvVar("OSG_DISPLAY_TYPE", value))
|
||||
{
|
||||
if (strcmp(ptr,"MONITOR")==0)
|
||||
if (value=="MONITOR")
|
||||
{
|
||||
_displayType = MONITOR;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"POWERWALL")==0)
|
||||
if (value=="POWERWALL")
|
||||
{
|
||||
_displayType = POWERWALL;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"REALITY_CENTER")==0)
|
||||
if (value=="REALITY_CENTER")
|
||||
{
|
||||
_displayType = REALITY_CENTER;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"HEAD_MOUNTED_DISPLAY")==0)
|
||||
if (value=="HEAD_MOUNTED_DISPLAY")
|
||||
{
|
||||
_displayType = HEAD_MOUNTED_DISPLAY;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_STEREO_MODE")) != 0)
|
||||
if (getEnvVar("OSG_STEREO_MODE", value))
|
||||
{
|
||||
if (strcmp(ptr,"QUAD_BUFFER")==0)
|
||||
if (value=="QUAD_BUFFER")
|
||||
{
|
||||
_stereoMode = QUAD_BUFFER;
|
||||
}
|
||||
else if (strcmp(ptr,"ANAGLYPHIC")==0)
|
||||
else if (value=="ANAGLYPHIC")
|
||||
{
|
||||
_stereoMode = ANAGLYPHIC;
|
||||
}
|
||||
else if (strcmp(ptr,"HORIZONTAL_SPLIT")==0)
|
||||
else if (value=="HORIZONTAL_SPLIT")
|
||||
{
|
||||
_stereoMode = HORIZONTAL_SPLIT;
|
||||
}
|
||||
else if (strcmp(ptr,"VERTICAL_SPLIT")==0)
|
||||
else if (value=="VERTICAL_SPLIT")
|
||||
{
|
||||
_stereoMode = VERTICAL_SPLIT;
|
||||
}
|
||||
else if (strcmp(ptr,"LEFT_EYE")==0)
|
||||
else if (value=="LEFT_EYE")
|
||||
{
|
||||
_stereoMode = LEFT_EYE;
|
||||
}
|
||||
else if (strcmp(ptr,"RIGHT_EYE")==0)
|
||||
else if (value=="RIGHT_EYE")
|
||||
{
|
||||
_stereoMode = RIGHT_EYE;
|
||||
}
|
||||
else if (strcmp(ptr,"HORIZONTAL_INTERLACE")==0)
|
||||
else if (value=="HORIZONTAL_INTERLACE")
|
||||
{
|
||||
_stereoMode = HORIZONTAL_INTERLACE;
|
||||
}
|
||||
else if (strcmp(ptr,"VERTICAL_INTERLACE")==0)
|
||||
else if (value=="VERTICAL_INTERLACE")
|
||||
{
|
||||
_stereoMode = VERTICAL_INTERLACE;
|
||||
}
|
||||
else if (strcmp(ptr,"CHECKERBOARD")==0)
|
||||
else if (value=="CHECKERBOARD")
|
||||
{
|
||||
_stereoMode = CHECKERBOARD;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_STEREO")) != 0)
|
||||
if (getEnvVar("OSG_STEREO", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_stereo = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_stereo = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_EYE_SEPARATION")) != 0)
|
||||
{
|
||||
_eyeSeparation = osg::asciiToFloat(ptr);
|
||||
}
|
||||
getEnvVar("OSG_EYE_SEPARATION", _eyeSeparation);
|
||||
getEnvVar("OSG_SCREEN_WIDTH", _screenWidth);
|
||||
getEnvVar("OSG_SCREEN_HEIGHT", _screenHeight);
|
||||
getEnvVar("OSG_SCREEN_DISTANCE", _screenDistance);
|
||||
|
||||
if( (ptr = getenv("OSG_SCREEN_WIDTH")) != 0)
|
||||
if (getEnvVar("OSG_SPLIT_STEREO_HORIZONTAL_EYE_MAPPING", value))
|
||||
{
|
||||
_screenWidth = osg::asciiToFloat(ptr);
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SCREEN_HEIGHT")) != 0)
|
||||
{
|
||||
_screenHeight = osg::asciiToFloat(ptr);
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SCREEN_DISTANCE")) != 0)
|
||||
{
|
||||
_screenDistance = osg::asciiToFloat(ptr);
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SPLIT_STEREO_HORIZONTAL_EYE_MAPPING")) != 0)
|
||||
{
|
||||
if (strcmp(ptr,"LEFT_EYE_LEFT_VIEWPORT")==0)
|
||||
if (value=="LEFT_EYE_LEFT_VIEWPORT")
|
||||
{
|
||||
_splitStereoHorizontalEyeMapping = LEFT_EYE_LEFT_VIEWPORT;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"LEFT_EYE_RIGHT_VIEWPORT")==0)
|
||||
if (value=="LEFT_EYE_RIGHT_VIEWPORT")
|
||||
{
|
||||
_splitStereoHorizontalEyeMapping = LEFT_EYE_RIGHT_VIEWPORT;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SPLIT_STEREO_HORIZONTAL_SEPARATION")) != 0)
|
||||
{
|
||||
_splitStereoHorizontalSeparation = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_SPLIT_STEREO_HORIZONTAL_SEPARATION", _splitStereoHorizontalSeparation);
|
||||
|
||||
|
||||
if( (ptr = getenv("OSG_SPLIT_STEREO_VERTICAL_EYE_MAPPING")) != 0)
|
||||
if (getEnvVar("OSG_SPLIT_STEREO_VERTICAL_EYE_MAPPING", value))
|
||||
{
|
||||
if (strcmp(ptr,"LEFT_EYE_TOP_VIEWPORT")==0)
|
||||
if (value=="LEFT_EYE_TOP_VIEWPORT")
|
||||
{
|
||||
_splitStereoVerticalEyeMapping = LEFT_EYE_TOP_VIEWPORT;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"LEFT_EYE_BOTTOM_VIEWPORT")==0)
|
||||
if (value=="LEFT_EYE_BOTTOM_VIEWPORT")
|
||||
{
|
||||
_splitStereoVerticalEyeMapping = LEFT_EYE_BOTTOM_VIEWPORT;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SPLIT_STEREO_AUTO_ADJUST_ASPECT_RATIO")) != 0)
|
||||
if (getEnvVar("OSG_SPLIT_STEREO_AUTO_ADJUST_ASPECT_RATIO", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_splitStereoAutoAdjustAspectRatio = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_splitStereoAutoAdjustAspectRatio = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SPLIT_STEREO_VERTICAL_SEPARATION")) != 0)
|
||||
{
|
||||
_splitStereoVerticalSeparation = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_SPLIT_STEREO_VERTICAL_SEPARATION", _splitStereoVerticalSeparation);
|
||||
|
||||
if( (ptr = getenv("OSG_MAX_NUMBER_OF_GRAPHICS_CONTEXTS")) != 0)
|
||||
{
|
||||
_maxNumOfGraphicsContexts = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_MAX_NUMBER_OF_GRAPHICS_CONTEXTS", _maxNumOfGraphicsContexts);
|
||||
|
||||
if( (ptr = getenv("OSG_COMPILE_CONTEXTS")) != 0)
|
||||
if (getEnvVar("OSG_COMPILE_CONTEXTS", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_compileContextsHint = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_compileContextsHint = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_SERIALIZE_DRAW_DISPATCH")) != 0)
|
||||
if (getEnvVar("OSG_SERIALIZE_DRAW_DISPATCH", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_serializeDrawDispatch = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_serializeDrawDispatch = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_USE_SCENEVIEW_FOR_STEREO")) != 0)
|
||||
if (getEnvVar("OSG_USE_SCENEVIEW_FOR_STEREO", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_useSceneViewForStereoHint = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_useSceneViewForStereoHint = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_NUM_DATABASE_THREADS")) != 0)
|
||||
{
|
||||
_numDatabaseThreadsHint = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_NUM_DATABASE_THREADS", _numDatabaseThreadsHint);
|
||||
|
||||
if( (ptr = getenv("OSG_NUM_HTTP_DATABASE_THREADS")) != 0)
|
||||
{
|
||||
_numHttpDatabaseThreadsHint = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_NUM_HTTP_DATABASE_THREADS", _numHttpDatabaseThreadsHint);
|
||||
|
||||
if( (ptr = getenv("OSG_MULTI_SAMPLES")) != 0)
|
||||
{
|
||||
_numMultiSamples = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_MULTI_SAMPLES", _numMultiSamples);
|
||||
|
||||
if( (ptr = getenv("OSG_TEXTURE_POOL_SIZE")) != 0)
|
||||
{
|
||||
_maxTexturePoolSize = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_TEXTURE_POOL_SIZE", _maxTexturePoolSize);
|
||||
|
||||
if( (ptr = getenv("OSG_BUFFER_OBJECT_POOL_SIZE")) != 0)
|
||||
{
|
||||
_maxBufferObjectPoolSize = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_BUFFER_OBJECT_POOL_SIZE", _maxBufferObjectPoolSize);
|
||||
|
||||
|
||||
{ // Read implicit buffer attachments combinations for both render and resolve mask
|
||||
@ -642,71 +603,65 @@ void DisplaySettings::readEnvironmentalVariables()
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_GL_VERSION")) != 0 || (ptr = getenv("OSG_GL_CONTEXT_VERSION")) != 0)
|
||||
if (getEnvVar("OSG_GL_VERSION", value) || getEnvVar("OSG_GL_CONTEXT_VERSION", value))
|
||||
{
|
||||
_glContextVersion = ptr;
|
||||
_glContextVersion = value;
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_GL_CONTEXT_FLAGS")) != 0)
|
||||
{
|
||||
_glContextFlags = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_GL_CONTEXT_FLAGS", _glContextFlags);
|
||||
|
||||
if( (ptr = getenv("OSG_GL_CONTEXT_PROFILE_MASK")) != 0)
|
||||
{
|
||||
_glContextProfileMask = atoi(ptr);
|
||||
}
|
||||
getEnvVar("OSG_GL_CONTEXT_PROFILE_MASK", _glContextProfileMask);
|
||||
|
||||
if ((ptr = getenv("OSG_SWAP_METHOD")) != 0)
|
||||
if (getEnvVar("OSG_SWAP_METHOD", value))
|
||||
{
|
||||
if (strcmp(ptr,"DEFAULT")==0)
|
||||
if (value=="DEFAULT")
|
||||
{
|
||||
_swapMethod = SWAP_DEFAULT;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"EXCHANGE")==0)
|
||||
if (value=="EXCHANGE")
|
||||
{
|
||||
_swapMethod = SWAP_EXCHANGE;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"COPY")==0)
|
||||
if (value=="COPY")
|
||||
{
|
||||
_swapMethod = SWAP_COPY;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"UNDEFINED")==0)
|
||||
if (value=="UNDEFINED")
|
||||
{
|
||||
_swapMethod = SWAP_UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((ptr = getenv("OSG_SYNC_SWAP_BUFFERS")) != 0)
|
||||
if (getEnvVar("OSG_SYNC_SWAP_BUFFERS", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_syncSwapBuffers = 0;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_syncSwapBuffers = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_syncSwapBuffers = atoi(ptr);
|
||||
_syncSwapBuffers = atoi(value.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((ptr = getenv("OSG_VERTEX_BUFFER_HINT")) != 0)
|
||||
if (getEnvVar("OSG_VERTEX_BUFFER_HINT", value))
|
||||
{
|
||||
if (strcmp(ptr,"VERTEX_BUFFER_OBJECT")==0 || strcmp(ptr,"VBO")==0)
|
||||
if (value=="VERTEX_BUFFER_OBJECT" || value=="VBO")
|
||||
{
|
||||
OSG_NOTICE<<"OSG_VERTEX_BUFFER_HINT set to VERTEX_BUFFER_OBJECT"<<std::endl;
|
||||
_vertexBufferHint = VERTEX_BUFFER_OBJECT;
|
||||
}
|
||||
else if (strcmp(ptr,"VERTEX_ARRAY_OBJECT")==0 || strcmp(ptr,"VAO")==0)
|
||||
else if (value=="VERTEX_ARRAY_OBJECT" || value=="VAO")
|
||||
{
|
||||
OSG_NOTICE<<"OSG_VERTEX_BUFFER_HINT set to VERTEX_ARRAY_OBJECT"<<std::endl;
|
||||
_vertexBufferHint = VERTEX_ARRAY_OBJECT;
|
||||
@ -719,50 +674,50 @@ void DisplaySettings::readEnvironmentalVariables()
|
||||
}
|
||||
|
||||
|
||||
if ((ptr = getenv("OSG_SHADER_HINT")) != 0)
|
||||
if (getEnvVar("OSG_SHADER_HINT", value))
|
||||
{
|
||||
if (strcmp(ptr,"GL2")==0)
|
||||
if (value=="GL2")
|
||||
{
|
||||
setShaderHint(SHADER_GL2);
|
||||
}
|
||||
else if (strcmp(ptr,"GL3")==0)
|
||||
else if (value=="GL3")
|
||||
{
|
||||
setShaderHint(SHADER_GL3);
|
||||
}
|
||||
else if (strcmp(ptr,"GLES2")==0)
|
||||
else if (value=="GLES2")
|
||||
{
|
||||
setShaderHint(SHADER_GLES2);
|
||||
}
|
||||
else if (strcmp(ptr,"GLES3")==0)
|
||||
else if (value=="GLES3")
|
||||
{
|
||||
setShaderHint(SHADER_GLES3);
|
||||
}
|
||||
else if (strcmp(ptr,"NONE")==0)
|
||||
else if (value=="NONE")
|
||||
{
|
||||
setShaderHint(SHADER_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
if ((ptr = getenv("OSG_TEXT_SHADER_TECHNIQUE")) != 0)
|
||||
if (getEnvVar("OSG_TEXT_SHADER_TECHNIQUE", value))
|
||||
{
|
||||
setTextShaderTechnique(ptr);
|
||||
setTextShaderTechnique(value);
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_KEYSTONE")) != 0)
|
||||
if (getEnvVar("OSG_KEYSTONE", value))
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0)
|
||||
if (value=="OFF")
|
||||
{
|
||||
_keystoneHint = false;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"ON")==0)
|
||||
if (value=="ON")
|
||||
{
|
||||
_keystoneHint = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((ptr = getenv("OSG_KEYSTONE_FILES")) != 0)
|
||||
if (getEnvVar("OSG_KEYSTONE_FILES", value))
|
||||
{
|
||||
#if defined(WIN32) && !defined(__CYGWIN__)
|
||||
char delimitor = ';';
|
||||
@ -770,7 +725,7 @@ void DisplaySettings::readEnvironmentalVariables()
|
||||
char delimitor = ':';
|
||||
#endif
|
||||
|
||||
std::string paths(ptr);
|
||||
std::string paths(value);
|
||||
if (!paths.empty())
|
||||
{
|
||||
std::string::size_type start = 0;
|
||||
@ -787,27 +742,28 @@ void DisplaySettings::readEnvironmentalVariables()
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_MENUBAR_BEHAVIOR")) != 0)
|
||||
if (getEnvVar("OSG_MENUBAR_BEHAVIOR", value))
|
||||
{
|
||||
if (strcmp(ptr,"AUTO_HIDE")==0)
|
||||
if (value=="AUTO_HIDE")
|
||||
{
|
||||
_OSXMenubarBehavior = MENUBAR_AUTO_HIDE;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"FORCE_HIDE")==0)
|
||||
if (value=="FORCE_HIDE")
|
||||
{
|
||||
_OSXMenubarBehavior = MENUBAR_FORCE_HIDE;
|
||||
}
|
||||
else
|
||||
if (strcmp(ptr,"FORCE_SHOW")==0)
|
||||
if (value=="FORCE_SHOW")
|
||||
{
|
||||
_OSXMenubarBehavior = MENUBAR_FORCE_SHOW;
|
||||
}
|
||||
}
|
||||
|
||||
if( (ptr = getenv("OSG_NvOptimusEnablement")) != 0)
|
||||
int enable = 0;
|
||||
if (getEnvVar("OSG_NvOptimusEnablement", enable))
|
||||
{
|
||||
setNvOptimusEnablement(atoi(ptr));
|
||||
setNvOptimusEnablement(enable);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -927,12 +927,16 @@ GLExtensions::GLExtensions(unsigned int in_contextID):
|
||||
isTextureMaxLevelSupported = (glVersion >= 1.2f);
|
||||
|
||||
isTextureStorageEnabled = validContext && ((glVersion >= 4.2f) || isGLExtensionSupported(contextID, "GL_ARB_texture_storage"));
|
||||
if ( (ptr = getenv("OSG_GL_TEXTURE_STORAGE")) != 0 && isTextureStorageEnabled)
|
||||
{
|
||||
if (strcmp(ptr,"OFF")==0 || strcmp(ptr,"DISABLE")==0 ) isTextureStorageEnabled = false;
|
||||
else isTextureStorageEnabled = true;
|
||||
}
|
||||
|
||||
if (isTextureStorageEnabled)
|
||||
{
|
||||
std::string value;
|
||||
if (getEnvVar("OSG_GL_TEXTURE_STORAGE", value))
|
||||
{
|
||||
if (value=="OFF" || value=="DISABLE") isTextureStorageEnabled = false;
|
||||
else isTextureStorageEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Texture3D extensions
|
||||
isTexture3DFast = validContext && (OSG_GL3_FEATURES || isGLExtensionSupported(contextID,"GL_EXT_texture3D"));
|
||||
|
Loading…
Reference in New Issue
Block a user