Этот вопрос , кажется, задает точный вопрос, но его задают в 2011 году, использует QGLWidget, который является устаревшим методом с фиксированным конвейером.
Я получаю неверные результатыпри использовании QImage, как это, где изображение текстуры выглядит поврежденным.Очевидно, что-то выключено, и биты не возвращаются в ожидаемом формате RGB.Как правильно использовать QImage в этом случае?
QImage img(texture.file_path.c_str());
unsigned char* actual_texture_img = img.bits();
int width = img.width();
int height = img.height();
if (!actual_texture_img) {
return -1;
}
GLuint texture_id;
glGenTextures(1, &texture_id);
glBindTexture(GL_TEXTURE_2D, texture_id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, actual_texture_img);
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
образец изображения с неправильной текстурой: