Important: Please read the Qt Code of Conduct -

Difficulty using SOIL library with Qt

  • Alright so after a painful extravaganza trying to build a 64bit flavor of SOIL, I managed to link to the library in my .pro file (in Qt Creator) and establish the include directory. I have hit a problem. This is with my image resources:

    I have a png in an image resource and used the resource editor "Copy Resource Path to Clipboard" feature to grab the path. I then dropped the path into a SOIL_load_OGL_texture function call within a GLWidget constructor. Heres the code:

    @MyGLWidget::MyGLWidget(QWidget *parent) :
    tex = SOIL_load_OGL_texture(":/gfx/gfx/back.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
    qDebug() << tex;

    My issue here is that 0 is always being spit back to the console, which I know means the function failed. Anybody notice anything I missed?

  • Moderators


    I don't know how SOIL works, but the 1st thing I'd do is check that the image file can be loaded.

    Try do display ":/gfx/gfx/back.png" in a QLabel -- does it show up?

  • Good thought, so I did I created a QLabel and set the internal pixmap (using Qt Creator's gui) as this image and sure enough it showed up. So it seems the resource is fine, I wonder if anyone has had experience using SOIL in Qt?

  • Lifetime Qt Champion


    Are you sure SOIL supports reading files from Qt's resources ?
    You should first try to load your file from the hard drive to ensure SOIL works correctly.

    Also, I would rather do that in the initializeGL function since it's the function dedicated to all the OpenGL setup

    Hope it helps

Log in to reply