diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 5c0e1c9c3bd729b68f91ab52088a31bed34927a4..0ed3c09091cff833173c2c123c43fe920a23038f 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1087,7 +1087,8 @@ LLRender::LLRender() mQuadCycle(0), mMode(LLRender::TRIANGLES), mCurrTextureUnitIndex(0), - mLineWidth(1.f) + mLineWidth(1.f), + mDummyVAO(0) { mTexUnits.reserve(LL_NUM_TEXTURE_LAYERS); for (U32 i = 0; i < LL_NUM_TEXTURE_LAYERS; i++) @@ -1135,9 +1136,8 @@ void LLRender::init() if (sGLCoreProfile && !LLVertexBuffer::sUseVAO) { //bind a dummy vertex array object so we're core profile compliant #ifdef GL_ARB_vertex_array_object - U32 ret; - glGenVertexArrays(1, &ret); - glBindVertexArray(ret); + glGenVertexArrays(1, &mDummyVAO); + glBindVertexArray(mDummyVAO); #endif } @@ -1154,6 +1154,14 @@ void LLRender::init() void LLRender::shutdown() { + if (mDummyVAO != 0) + { //bind a dummy vertex array object so we're core profile compliant +#ifdef GL_ARB_vertex_array_object + glDeleteVertexArrays(1, &mDummyVAO); +#endif + mDummyVAO = 0; + } + for (U32 i = 0; i < mTexUnits.size(); i++) { delete mTexUnits[i]; diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 194891b95eccf452a51a21c6f95d0520f165fd83..5c2c74b58b1d5baa039090f103ae6aca9464234b 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -508,6 +508,7 @@ class LLRender eBlendFactor mCurrBlendAlphaDFactor; F32 mMaxAnisotropy; + U32 mDummyVAO; std::vector<LLVector3> mUIOffset; std::vector<LLVector3> mUIScale;