Qt5 opengl не может загрузить bmp файл изображения в виде текстуры в куб
Я нашел этот пример проекта, основанный на учебнике NEHE, но не работает на моей версии Qt 5, попробовал отредактировать некоторый код, но этот файл не может быть загружен. И предупреждение тоже существует
<pre lang="c++">предупреждение: C4005: 'CALLBACK': переопределение макроса
эта строка дает предупреждение макроса, и файл minwindef.h:
#define CALLBACK __stdcall
Код:
void loadGLTextures() { QImage t; QImage b; if ( !b.load( ":/images/nehe.bmp" ) ) { //b = QImage( 16, 16, 32 ); //original //b.fill( Qt::green.rgb() ); //original QMessageBox::information(this, "Error", "Could not load file"); QImage b(16, 16, QImage::Format_RGB32); //******* b.fill(Qt::green); //************* } t = QGLWidget::convertToGLFormat( b ); if(t.isNull()) { QMessageBox::information(this, "Error", "IMAGE IS NULL"); } glGenTextures( 1, texture );// Create The Texture glBindTexture( GL_TEXTURE_2D, texture[0] ); //assign a texture name to texture data. glTexImage2D( GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits() ); //Linear Filtering glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); }
После запуска кода QMessage выскакивает со словами "не удалось загрузить файл", я не уверен, что что-то не так.
Что я уже пробовал:
попробовал изменить какой-то исходный код, но все равно ошибка bmp-файл не может быть загружен
Jochen Arndt
Пожалуйста, постарайтесь быть более конкретным в том, что не работает.
Тут B.нагрузки() позвонить не получится?
Если да, то существует ли файл nehe.png (является встроенным ресурсом)?
Если он существует, является ли он допустимым файлом изображения (расширение указывает PNG, а не BMP)?
Что касается макро-переопределения:
Проверьте, где он определен (в обоих местах). Предупреждающее сообщение должно содержать эту информацию. Затем проверьте, почему это произошло. Мы не можем помочь, не зная об определениях и о том, какие файлы их содержат. Это может быть конфликт разных версий или конфликт между несвязанными модулями.
Member 13927363
Привет, я снова обновил свой вопрос. Что касается вашего вопроса, то я действительно не уверен, какая часть выходит из строя, так как она работает. Единственная проблема заключается в том, что текстура не загружается, если файл image .bmp.
Что касается переопределения макроса, то я нажал на ошибку, и из этой части "#define CALLBACK __stdcall " выдает предупреждение с файлом minwindef.h
Надеюсь, вы сможете помочь. СПАСИБО