fix a bug in a changeVisualShape/texture selection, out-of-bounds check was using the wrong array.

May fix some internal texture mug bug.
This commit is contained in:
erwincoumans
2017-09-25 11:11:48 -07:00
parent 0f30c95734
commit 6d68a67c79

View File

@@ -971,10 +971,10 @@ int GLInstancingRenderer::registerTexture(const unsigned char* texels, int width
void GLInstancingRenderer::replaceTexture(int shapeIndex, int textureId) void GLInstancingRenderer::replaceTexture(int shapeIndex, int textureId)
{ {
if (shapeIndex >=0 && shapeIndex < m_data->m_textureHandles.size()) if ((shapeIndex >=0) && (shapeIndex < m_graphicsInstances.size()))
{ {
b3GraphicsInstance* gfxObj = m_graphicsInstances[shapeIndex]; b3GraphicsInstance* gfxObj = m_graphicsInstances[shapeIndex];
if (textureId>=0) if (textureId>=0 && textureId < m_data->m_textureHandles.size())
{ {
gfxObj->m_textureIndex = textureId; gfxObj->m_textureIndex = textureId;
gfxObj->m_flags |= eGfxHasTexture; gfxObj->m_flags |= eGfxHasTexture;
@@ -985,7 +985,7 @@ void GLInstancingRenderer::replaceTexture(int shapeIndex, int textureId)
void GLInstancingRenderer::updateTexture(int textureIndex, const unsigned char* texels, bool flipPixelsY) void GLInstancingRenderer::updateTexture(int textureIndex, const unsigned char* texels, bool flipPixelsY)
{ {
if (textureIndex>=0) if ((textureIndex>=0) && (textureIndex < m_data->m_textureHandles.size()))
{ {
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
b3Assert(glGetError() ==GL_NO_ERROR); b3Assert(glGetError() ==GL_NO_ERROR);
@@ -1027,7 +1027,7 @@ void GLInstancingRenderer::activateTexture(int textureIndex)
{ {
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
if (textureIndex>=0) if (textureIndex>=0 && textureIndex < m_data->m_textureHandles.size())
{ {
glBindTexture(GL_TEXTURE_2D,m_data->m_textureHandles[textureIndex].m_glTexture); glBindTexture(GL_TEXTURE_2D,m_data->m_textureHandles[textureIndex].m_glTexture);
} else } else