Я использую Corona (для загрузки изображений) / C ++ / Glut.
У меня странная проблема с загрузкой текстуры. Я знаю, что проблема с glTexImage2D, но странно, все в порядке, когда изображение 850 x 249 или 850 x 251 или 850 x 252 . Но когда это 850 x 250 , я получаю ошибку после компиляции:
Необработанное исключение в 0x024bfee9 в
[...]. exe: 0xC0000005: Доступ
нарушение считывания местоположения 0x0265c001.
Я использую:
glTexImage2D(GL_TEXTURE_2D, 0, TextureFormat, TextureImage->getWidth(), TextureImage->getHeight(), 0, TextureFormat, GL_UNSIGNED_BYTE, TextureImage->getPixels());
Что происходит?
редактировать
edit2 - код
Загрузка кода текстуры:
GLuint LoadTexture(char *_filename)
{
cout<<"loading image start"<<endl;
GLuint ttemp=0;
// Load texture
cout<<"1"<<endl;
corona::Image *TextureImage = corona::OpenImage(_filename);
cout<<"2"<<endl;
if (TextureImage)
{
glGenTextures(1, &ttemp);
glBindTexture(GL_TEXTURE_2D, ttemp);
// get the format of image
GLuint TextureFormat;
switch (TextureImage->getFormat())
{
case corona::PF_B8G8R8A8:
TextureImage = ConvertImage(TextureImage, corona::PF_R8G8B8A8);
TextureFormat = GL_RGBA; break;
case corona::PF_R8G8B8A8:
TextureFormat = GL_RGBA; break;
case corona::PF_B8G8R8:
TextureImage = ConvertImage(TextureImage, corona::PF_R8G8B8);
TextureFormat = GL_RGB; break;
case corona::PF_R8G8B8:
TextureFormat = GL_RGB; break;
case corona::PF_I8: // for example gif - convert to RGB
TextureImage = ConvertImage(TextureImage, corona::PF_R8G8B8);
TextureFormat = GL_RGB; break;
}
// Flip image
FlipImage(TextureImage, corona::CA_X);
// Generate The Texture
cout<<"3"<<endl;
cout<<"-"<<endl;
cout<<"TextureFormat " <<TextureFormat<<endl;
cout<<"TextureImage->getWidth() " <<TextureImage->getWidth()<<endl;
cout<<"TextureImage->getHeight() " <<TextureImage->getHeight()<<endl;
cout<<"TextureImage->getPixels() " <<TextureImage->getPixels()<<endl;
cout<<"-"<<endl;
glTexImage2D(GL_TEXTURE_2D, 0, TextureFormat, TextureImage->getWidth(), TextureImage->getHeight(), 0, TextureFormat, GL_UNSIGNED_BYTE, TextureImage->getPixels());
cout<<"4"<<endl;
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Linear Filtering
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // Linear Filtering
cout<<"5"<<endl;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
cout<<"6"<<endl;
delete TextureImage;
cout<<"7"<<endl;
}
cout<<"8"<<endl;
return ttemp;
}
Я использую это так:
GLuint texttest;
texttest= LoadTexture("test.png");