Made VAO the default for GL3 builds.

Improved the handling of DisplaySettings::getVertexBufferHint() values.
This commit is contained in:
Robert Osfield
2017-03-21 15:38:52 +00:00
parent 5d6322da2b
commit 1778a2a6fb

View File

@@ -96,8 +96,14 @@ State::State():
_isVertexBufferObjectSupported = false;
_isVertexArrayObjectSupported = false;
#if OSG_GL3_FEATURES
_forceVertexBufferObject = true;
_forceVertexArrayObject = true;
#else
_forceVertexBufferObject = false;
_forceVertexArrayObject = false;
#endif
_lastAppliedProgramObject = 0;
@@ -179,8 +185,17 @@ void State::initializeExtensionProcs()
_isVertexArrayObjectSupported = _glExtensions->isVAOSupported;
const DisplaySettings* ds = getDisplaySettings() ? getDisplaySettings() : osg::DisplaySettings::instance().get();
_forceVertexArrayObject = _isVertexArrayObjectSupported && (ds->getVertexBufferHint()==DisplaySettings::VERTEX_ARRAY_OBJECT);
_forceVertexBufferObject = _forceVertexArrayObject || (_isVertexBufferObjectSupported && (ds->getVertexBufferHint()==DisplaySettings::VERTEX_BUFFER_OBJECT));
if (ds->getVertexBufferHint()==DisplaySettings::VERTEX_BUFFER_OBJECT)
{
_forceVertexBufferObject = true;
_forceVertexArrayObject = false;
}
else if (ds->getVertexBufferHint()==DisplaySettings::VERTEX_ARRAY_OBJECT)
{
_forceVertexBufferObject = true;
_forceVertexArrayObject = true;
}
OSG_NOTICE<<"_forceVertexArrayObject = "<<_forceVertexArrayObject<<std::endl;
OSG_NOTICE<<"_forceVertexBufferObject = "<<_forceVertexBufferObject<<std::endl;