I was loading a image in openGl with the Glaux library when I came across a very strange phenomenon with a array. Some example of what I tried and if they succeeded or not are below. The curFreeId variable is global. The extra variables I created to test with are local to the function.
Since when does this effect the flow of code.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
vs
modStruct->t[ i ].gluId = 0;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
The first code will not work. The second will. Does anyone have any clue why this happens?
EDIT: Strangely enough, this also works correctly.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
and so does this.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
Continuing on with some testing. I came across even more curious results.
This works
unsigned int curFreeId = 0;
unsigned int curid = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
But this does not...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
But this does...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
What is the world... Is this some glitch of some sort?