В настоящее время мой рендеринг работает, за исключением полного рендеринга текстур. Я получаю сообщение об ошибке 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);
ли 'glGetError()' 'возвращение GL_NO_ERROR' прямо перед вашим' glTexImage2D() 'позвонить? – genpfault
проверить ошибку glGet перед этим кодом ... использовать while (glGetError() == no_error), одиночный оператор возвращает только верхнюю ошибку, но их может быть больше. – fen
Да, я действительно вызывал glGetError() прямо перед этим, и он возвращался GL_NO_ERROR – user2726234