Salut,

J'ai un problème en essayant de charger une texture en OpenGL avec Qt.
J'essaye de convertir l'image chargée au format OpenGL, mais alors il semble qu'il y ait un problème de format, car une assertion saute.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void Texture::load(QString file)
{
    textpath = QDir::currentPath()+"/"+MESHES_PATH+file;
 
    if(QFile::exists(textpath)) {
        QImage temp;
        temp.load(textpath);
        temp.convertToFormat(QImage::Format_RGB32);
        if(image.load(textpath),"JPG") {
 
            cout << "success to load : " << textpath.toStdString() << endl;
            image = QGLWidget::convertToGLFormat(temp);
            cout << "after convertion" << endl;
            init();
        }
    }
    else
        cout << "Warning : La texture " << file.toStdString() << " n'existe pas dans : "
             << (QDir::currentPath().toStdString()+"/"+MESHES_PATH) << endl;
}
 
void Texture::init()
{
    // Generates 1 id and write it on ID
    glGenTextures(1, &ID);
 
    // Bind texture
    glBindTexture(GL_TEXTURE_2D, ID);
 
    // Send pixels to GC
    glTexImage2D(GL_TEXTURE_2D, 0, 3, image.width(), image.height(), 0, format, GL_UNSIGNED_BYTE, image.bits());
 
    // Filters
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
    // Unbind
    glBindTexture(GL_TEXTURE_2D, 0);
}
J'appelle la fonction load et j'ai une assertion sur la fonction statique QGLWidget::convertToGLFormat(temp) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ASSERT: "dst.depth() == 32" in file c:\ndk_buildrepos\qt-desktop\src\opengl\qgl.cpp, line 2207
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
alors que mon image est correctement chargée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
success to load : C:/Users/.........../resources/mesh/cube.jpg
Ma variable membre format es définie comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
GLuint format;
format = GL_RGB;
J'ai essayé de setter le format de l'image chargée en openGL avec le bon format en faisant : "temp.convertToFormat(QImage::Format_RGB32);", mais il semble que cela ne fonctionne pas.

Je ne vois pas vraiment comment corriger le problème et ce que je fais de mal...

Merci d'avance,
Az