QOpenGLShaderProgram: could not create shader program



  • Hi

    When I run program in Qt 5.4.1 MinGW 32 bit I get this message: "QOpenGLShaderProgram: could not create shader program".

    I am not able to improve my graphic driver.
    Is there any solution to solve this problem?

    Thanks.


  • Moderators

    @vladinko0 said:

    Is there any solution to solve this problem?

    Pretty hard to say when you basically present no information at all...



  • I don't know, what additional information you need?

    This error regards all kinds of Qt projects. I am using HP Compaq dc7800p Small Form Fader, Windows Vista Business 32 bit, DirectX 11, Intel Q35 Express Chipset Family Graphic driver.

    Please, specify, what else you need?


  • Moderators

    Please give a minimal but complete example so that one can try to reproduce the problem.



  • It regards all projects. For example "Hello World" program.


  • Moderators

    @vladinko0 said:

    QOpenGLShaderProgram

    Ah, now I understand. So you're not tinkering with QOpenGLShaderProgram yourself at all, right?



  • Yes, You are right.


  • Moderators

    Which Qt version did you install exactly?

    Qt 5.4.1 for Windows 64-bit (VS 2013, 722 MB) (info)
    Qt 5.4.1 for Windows 64-bit (VS 2013, OpenGL, 711 MB) (info)
    Qt 5.4.1 for Windows 32-bit (VS 2013, 705 MB) (info)
    Qt 5.4.1 for Windows 32-bit (VS 2013, OpenGL, 695 MB) (info)
    Qt 5.4.1 for Windows 32-bit (VS 2012, OpenGL, 644 MB) (info)
    Qt 5.4.1 for Windows 32-bit (VS 2010, OpenGL, 627 MB) (info)
    Qt 5.4.1 for Windows 32-bit (MinGW 4.9.1, 856 MB) (info)
    Qt 5.4.1 for Android (Windows 32-bit, 939 MB) (info)
    Qt 5.4.1 for Windows RT 32-bit (766 MB) (info)


  • Moderators

    @vladinko0 If your Qt version isn't OpenGL-only, then you can force your program to use ANGLE:
    QCoreApplication::setAttribute( Qt::AA_UseOpenGLES ); // use DirectX via ANGLE



  • I installed Qt 5.4.1 MinGW 4.9.1 (32 bit), OpenGL for Windows .


  • Moderators

    According to Intel documentation the Q35 Express chipset only supports OpenGL 1.3. That's waaay to low for Qt.

    You can run the ANGLE (or dynamic) version of Qt (OpenGL layer on top of DirectX). It's the package without "OpenGL" in the name mentioned by @Wieland. This still won't let you run some of the OpenGL examples. It's high time for an upgrade ;)



  • @Wieland said:

    @vladinko0 If your Qt version isn't OpenGL-only, then you can force your program to use ANGLE:
    QCoreApplication::setAttribute( Qt::AA_UseOpenGLES ); // use DirectX via ANGLE

    Is it possible to put this line into Qt Quick UI project?
    Because there are only qml files like this:
    import QtQuick 2.4
    import QtQuick.Controls 1.3
    import QtQuick.Window 2.2
    import QtQuick.Dialogs 1.2

    ApplicationWindow {
    title: qsTr("Hello World")
    width: 640
    height: 480

    menuBar: MenuBar {
        Menu {
            title: qsTr("&File")
            MenuItem {
                text: qsTr("&Open")
                onTriggered: messageDialog.show(qsTr("Open action triggered"));
            }
            MenuItem {
                text: qsTr("E&xit")
                onTriggered: Qt.quit();
            }
        }
    }
    
    MainForm {
        anchors.fill: parent
        button1.onClicked: messageDialog.show(qsTr("Button 1 pressed"))
        button2.onClicked: messageDialog.show(qsTr("Button 2 pressed"))
        button3.onClicked: messageDialog.show(qsTr("Button 3 pressed"))
    }
    
    MessageDialog {
        id: messageDialog
        title: qsTr("May I have your attention, please?")
    
        function show(caption) {
            messageDialog.text = caption;
            messageDialog.open();
        }
    }
    

    }

    Or where to put this line?


  • Moderators

    @vladinko0 It belongs in your main.cpp:

    int main(int argc, char *argv[])
    {
        // Options on Windows; set before instantiating QApplication
        // QCoreApplication::setAttribute( Qt::AA_UseOpenGLES ); // use DirectX via ANGLE
        
        QApplication app( argc, argv );
    


  • @Wieland But Qt Quick UI project has no main.cpp file.


  • Moderators

    @vladinko0 I know. Can't you use Qt Quick Application?



  • @Wieland Yes, I used also Qt Quick Application project with the same error.


  • Moderators

    Hmm. If you have an ANGLE capable Qt version and set the Qt::AA_UseOpenGLES attribute and it still doesn't work then I don't know. Sorry :-(



  • I had exactly the same issue with Qt 5.4.1 MinGW 32-bit

    @Wieland solution to force ANGLE is the good one, but it doesn't work. In fact I'm not sure this version support it. If you look into the \Qt5.4.1\5.4\mingw491_32\bin directory you will not find libEGL.dll, libGLESv2.dll and d3dcompiler_47.dll. I used to work with ANGLE but with Microsoft Visual Studio 2013 compilator, and these libraries are provided in the Qt distribution : "Qt 5.4.1 for Windows 32-bit (VS 2013, 705 MB)"

    @Wieland do you have MinGW or VS2013 compilator ?


  • Moderators

    @boumath Hi, I use VS 2013.



  • Thanks Wieland, that's explains why forcing ANGLE in your case is working and not for vladinko0

    @vladinko0, I suggest you to install Visual Studio 2013 (Express is free), and install Qt 5.4.1 for VS2013. Force Qt::AA_UseOpenGLES like Wieland says. Because your graphic chipset is old, perhaps you will need to set the environment variable QT_ANGLE_PLATFORM to d3d9 (if it doesn't support DirectX 11).



  • @boumath I tried VS2013 with Qt 5.5 .0 but no success. :(


  • Lifetime Qt Champion

    Hi,

    If you are still on the same machine the message from Chris:

    @Chris-Kawa said:

    According to Intel documentation the Q35 Express chipset only supports OpenGL 1.3. That's waaay to low for Qt.

    You can run the ANGLE (or dynamic) version of Qt (OpenGL layer on top of DirectX). It's the package without "OpenGL" in the name mentioned by @Wieland. This still won't let you run some of the OpenGL examples. It's high time for an upgrade ;)

    Is still valid



  • In fact I changed my machine. Graphic card is now Intel(R) Graphic Media Accelerator 3150. Result for Qt 5.4.1 mingw32 is the same.

    I forgot to mention, that with msvs2013 andQt 5.5 .0 the error is little bit different:
    Starting C:\Users\Vladimir\Documents\build-untitled11-Desktop_Qt_5_5_0_MSVC2013_32bit-Debug\debug\untitled11.exe...
    QML debugging is enabled. Only use this in a safe environment.
    class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): Could not initialize EGL display: error 0x3001

    class QWindowsEGLStaticContext *__cdecl QWindowsEGLStaticContext::create(class QFlags<enum QWindowsOpenGLTester::Renderer>): When using ANGLE, check if d3dcompiler_4x.dll is available
    C:\Users\Vladimir\Documents\build-untitled11-Desktop_Qt_5_5_0_MSVC2013_32bit-Debug\debug\untitled11.exe exited with code 0

    At the end project is launched.


  • Moderators

    GMA 3150 only supports OpenGL 1.4. That's still waaaaay in the woods. You're still gonna need to use ANGLE.

    Did you try what the message says? "When using ANGLE, check if d3dcompiler_4x.dll is available"
    This dll should be placed next to your executable.



  • Yes, I tried to put that file in to C:\Users\Vladimir\Documents\build-untitled11-Desktop_Qt_5_5_0_MSVC2013_32bit-Debug\debug
    but no luck.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.