2013-08-28 2 views
1

В настоящее время мой рендеринг работает, за исключением полного рендеринга текстур. Я получаю сообщение об ошибке 1380 или GL_INVALID_ENUM, сразу после вызова glTexture2D в этом сегменте кода. Я пробовал все, что мог придумать, но ошибка не исчезнет.Ошибка загрузки текстуры OpenGL FreeImage

-Calling получить ошибку прямо перед этим блоком кода -Texture находится по степеням 2 (128 х 128) -при новый 24-битный фотошоп .bmp

glEnable(GL_TEXTURE_2D); 

    FREE_IMAGE_FORMAT imageFormat = FreeImage_GetFileType(filename, 0); 
    FIBITMAP* bmpImage = FreeImage_ConvertTo32Bits(FreeImage_Load(imageFormat, filename)); 

    int width = FreeImage_GetWidth(bmpImage); 
    int height = FreeImage_GetHeight(bmpImage); 
    int nBPP = FreeImage_GetBPP(bmpImage); 

    if (nBPP == 32) 
    { 
     // Generate an ID for the texture. 
     glGenTextures(1, &m_texture); 

     // Bind the texture as a 2D texture. 
     glBindTexture(GL_TEXTURE_2D, m_texture); 

     // Load the image data into the texture unit. 
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)FreeImage_GetBits(bmpImage)); 

     if(auto temp = glGetError()) 
     { 
      // GL_INVALID_ENUM/1380 here 
     } 
    } 

    FreeImage_Unload(bmpImage); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
+0

ли 'glGetError()' 'возвращение GL_NO_ERROR' прямо перед вашим' glTexImage2D() 'позвонить? – genpfault

+0

проверить ошибку glGet перед этим кодом ... использовать while (glGetError() == no_error), одиночный оператор возвращает только верхнюю ошибку, но их может быть больше. – fen

+0

Да, я действительно вызывал glGetError() прямо перед этим, и он возвращался GL_NO_ERROR – user2726234

ответ

0

Вы говорите, что изображение 24 -bits, но в своем коде вы пишете:

if (nBPP == 32)

Смежные вопросы