Added check against State::useVertexBufferObjects(..) so that Display Lists are only used when VBO is OFF.

This commit is contained in:
Robert Osfield 2016-08-15 18:17:35 +01:00
parent 961bffcca4
commit 359b136b5e
4 changed files with 7 additions and 5 deletions

View File

@ -532,7 +532,7 @@ inline void Drawable::draw(RenderInfo& renderInfo) const
#ifdef OSG_GL_DISPLAYLISTS_AVAILABLE
if (_useDisplayList)
if (!state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects) && _useDisplayList)
{
// get the contextID (user defined ID of 0 upwards) for the
// current OpenGL context.

View File

@ -595,7 +595,7 @@ void Drawable::compileGLObjects(RenderInfo& renderInfo) const
{
#ifdef OSG_GL_DISPLAYLISTS_AVAILABLE
if (_useDisplayList)
if (!renderInfo.getState()->useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects) && _useDisplayList)
{
// get the contextID (user defined ID of 0 upwards) for the
// current OpenGL context.
@ -624,7 +624,6 @@ void Drawable::compileGLObjects(RenderInfo& renderInfo) const
void Drawable::draw(RenderInfo& renderInfo) const
{
// OSG_NOTICE<<"Geometry::draw() "<<this<<std::endl;
State& state = *renderInfo.getState();
bool useVertexArrayObject = state.useVertexArrayObject(_useVertexArrayObject);
@ -661,7 +660,7 @@ void Drawable::draw(RenderInfo& renderInfo) const
#ifdef OSG_GL_DISPLAYLISTS_AVAILABLE
if (_useDisplayList)
if (!state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects) && _useDisplayList)
{
// get the contextID (user defined ID of 0 upwards) for the
// current OpenGL context.

View File

@ -785,7 +785,7 @@ void Geometry::compileGLObjects(RenderInfo& renderInfo) const
void Geometry::drawImplementation(RenderInfo& renderInfo) const
{
// OSG_NOTICE<<" Geometry::drawImplementation()"<<std::endl;
// OSG_NOTICE<<"Geometry::drawImplementation() "<<this<<std::endl;
if (_containsDeprecatedData)
{

View File

@ -181,6 +181,9 @@ void State::initializeExtensionProcs()
_forceVertexArrayObject = _isVertexArrayObjectSupported && (ds->getVertexBufferHint()==DisplaySettings::VERTEX_ARRAY_OBJECT);
_forceVertexBufferObject = _forceVertexArrayObject || (_isVertexBufferObjectSupported && (ds->getVertexBufferHint()==DisplaySettings::VERTEX_BUFFER_OBJECT));
OSG_NOTICE<<"_forceVertexArrayObject = "<<_forceVertexArrayObject<<std::endl;
OSG_NOTICE<<"_forceVertexBufferObject = "<<_forceVertexBufferObject<<std::endl;
// Set up up global VertexArrayState object
_globalVertexArrayState = new VertexArrayState(this);