From Farshid Lashkari, "The following patch adds a multisample option to the

osg::DisplaySettings class. OsgCameraGroup will now read the setting
from the DisplaySettings instead of hardcoding the value. I added the
following commandline option to be able to set the multisample value:

--samples <num>

One thing to note, OsgCameraGroup would previously check if the
computer is an SGI and set multisample to 4. I retained this check in
DisplaySettings to be backwards compatible."
This commit is contained in:
Robert Osfield
2006-03-13 21:29:17 +00:00
parent d50f2e3add
commit 2b61cf0a1e
4 changed files with 36 additions and 10 deletions

View File

@@ -68,6 +68,7 @@ void DisplaySettings::setDisplaySettings(const DisplaySettings& vs)
_minimumNumberStencilBits = vs._minimumNumberStencilBits;
_maxNumOfGraphicsContexts = vs._maxNumOfGraphicsContexts;
_numMultiSamples = vs._numMultiSamples;
}
void DisplaySettings::merge(const DisplaySettings& vs)
@@ -82,6 +83,7 @@ void DisplaySettings::merge(const DisplaySettings& vs)
if (vs._minimumNumberAlphaBits>_minimumNumberAlphaBits) _minimumNumberAlphaBits = vs._minimumNumberAlphaBits;
if (vs._minimumNumberStencilBits>_minimumNumberStencilBits) _minimumNumberStencilBits = vs._minimumNumberStencilBits;
if (vs._numMultiSamples>_numMultiSamples) _numMultiSamples = vs._numMultiSamples;
}
void DisplaySettings::setDefaults()
@@ -114,6 +116,12 @@ void DisplaySettings::setDefaults()
_minimumNumberAccumAlphaBits = 0;
_maxNumOfGraphicsContexts = 3;
_numMultiSamples = 0;
#ifdef __sgi
// switch on anti-aliasing by default, just in case we have an Onyx :-)
_numMultiSamples = 4;
#endif
}
void DisplaySettings::setMinimumNumAccumBits(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)
@@ -303,6 +311,7 @@ void DisplaySettings::readCommandLine(ArgumentParser& arguments)
arguments.getApplicationUsage()->addCommandLineOption("--stencil","Request a stencil buffer visual");
arguments.getApplicationUsage()->addCommandLineOption("--accum-rgb","Request a rgb accumulator buffer visual");
arguments.getApplicationUsage()->addCommandLineOption("--accum-rgba","Request a rgb accumulator buffer visual");
arguments.getApplicationUsage()->addCommandLineOption("--samples <num>","Request a multisample visual");
}
std::string str;
@@ -350,4 +359,9 @@ void DisplaySettings::readCommandLine(ArgumentParser& arguments)
{
setMinimumNumAccumBits(8,8,8,8);
}
while(arguments.read("--samples",str))
{
_numMultiSamples = atoi(str.c_str());
}
}