Почему этот выбор массива вызывает такое сбойное явление? - PullRequest
0 голосов
/ 10 июля 2010

Я загружал изображение в 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]);

Что такое мир ... Это какой-то сбой?

1 Ответ

0 голосов
/ 11 июля 2010

Хорошо ... Я только что прошел весь проект в поисках всех связей с curFreeId.Мне удалось где-то найти случайное дополнение.

curFreeId++;

Я ненавижу простые ошибки ...

Спасибо за вашу помощь, ребята.Мне удалось исправить несколько других ошибок из-за ваших предложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...