OpenGL; gluBuild2DMipmaps Неверное перечисление

Я пытаюсь внедрить MIP-карты в OpenGL Framework. После попытки использовать учебник на http://www.swiftless.com/tutorials/opengl/mipmap_generation.html Я пробовал следующее

for (int i=0;i<used_textures;i++)
{
        //glEnable( GL_TEXTURE_2D );
        GLGETERROR("Texture set up a");

        glActiveTexture(GL_TEXTURE0+i);
    glBindTexture(GL_TEXTURE_2D,texhandles[i]);//bind texture - assume all are 2D
    GLGETERROR("Texture set up aa");
    for (int d=0;d<global_textures[i].depth;d++)
    {
        switch(global_textures[i].comp)
        {
        //There are 4 cases in the actual code but case 3 is the only one that is used based on the data file.
        case 3:
            //REMOVED  - glTexImage2D( GL_TEXTURE_2D,  d, GL_RGB32F, global_textures[i].sx>>d, global_textures[i].sy>>d, 0, GL_RGB, GL_UNSIGNED_BYTE, global_textures[i].texMap[d] );
            gluBuild2DMipmaps(GL_TEXTURE_2D, 4, global_textures[i].sx >> d, global_textures[i].sy >> d, GL_RGB32F, GL_UNSIGNED_BYTE, global_textures[i].texMap[d]);
            break;

        }
    }
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_LINEAR );
    //REMOVED - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
    //REMOVED - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );





}

в котором закомментированные строки, начинающиеся с REMOVED, — это то, что я удаляю в minmap вместо этого в соответствии с учебником swiftless.com. Код ошибки get создает это окно ошибки, которое мне кажется ошибкой в glActiveTexture или строки glBindTexture, но я изменил код только после этого. Для второго параметра в gluBuild2DMipmaps я пробовал использовать d, 1,2,3 и 4, но я все еще не совсем уверен, что это значит.

Может ли кто-нибудь объяснить недопустимую ошибку перечисления и где мне нужно искать, чтобы исправить это?


person Dezward    schedule 18.02.2018    source источник


Ответы (1)


Ошибка возникает, скорее всего, во второй итерации:

GL_NEAREST_MIPMAP_LINEAR не является допустимым значением для GL_TEXTURE_MAG_FILTER, так как мипмэппинг может помочь только с минимизацией, а не с увеличением. Вместо этого вы должны использовать GL_NEAREST или GL_LINEAR.

person BDL    schedule 18.02.2018
comment
Спасибо, сейчас рендерит коробку. Если вы заметили явную проблему в коде, на который я ссылался ранее, быстро уточните, до изменения он выглядел вот так и с мипмаппингом это выглядит как это, без текстуры, независимо от масштаба в нем есть. Это ожидаемо или я что-то напутал в другом месте? - person Dezward; 19.02.2018