Я загружал изображение в openGl из библиотеки Glaux, когда натолкнулся на очень странное явление с массивом. Ниже приведен пример того, что я пробовал, и если у них получилось, или нет. Переменная curFreeId является глобальной. Дополнительные переменные, которые я создал для тестирования, являются локальными для функции.
С каких пор это влияет на поток кода.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
против
modStruct->t[ i ].gluId = 0;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
Первый код не будет работать. Второе будет. Кто-нибудь знает, почему это происходит?
РЕДАКТИРОВАТЬ: как ни странно, это также работает правильно.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
и это тоже.
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
Продолжаем некоторые испытания. Я столкнулся с еще более любопытными результатами.
Это работает
unsigned int curFreeId = 0;
unsigned int curid = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
Но это не так ...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
Но это делает ...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
Что такое мир ... Это какой-то сбой?