Beginning in Qt with OpenGL



  • Hi..
    I have begun to work with opengl in -QT- Qt...

    Getting more errors on 'gl.h'.... one of them is...

    bq. syntax error: void should be preceded by ';'

    that error points to this line in 'gl.h'

    bq. WINGDIAPI void APIENTRY glAccum (GLenum op, GLfloat value);

    help me with this.... Thank you..



  • As you asked in another thread(http://developer.qt.nokia.com/forums/viewthread/6068/) before, do you try other exmaples? You can just make a QGLWidget yourself, and build to see what happen with your SDK or environment. By the way, which platform you are working with?



  • bq. As you asked in another thread(http://developer.qt.nokia.com/forums/viewthread/6068/) before, do you try other exmaples? You can just make a QGLWidget yourself, and build to see what happen with your SDK or enviorment.

    Yeah , this is not the same project , I have started a fresh project myself and added basic codes to IntializeGL,ResizeGL,paintGL and to draw a triangle...

    but the errors haven't changed...

    bq. By the way, which platform you are working with?

    I'm working in Windows Xp with Nokia's QT SDK for Nokia N97 mini



  • Do you build for desktop or symbian device ? Can you send your code to me, i can try it on my computer for you. Email: chuckgao.cg@gmail.com



  • Sure,... Thank you Chuck.Gao



  • [quote author="Dinesh Balu" date="1306132718"]Sure,... Thank you Chuck.Gao[/quote]

    The code have some wrong syntax. right one is modified

    1. GamePlay::InitializeGL() --> GamePlay::initializeGL() in both header and source file
    2. glViewPort --> glViewport
    3. draw() --> GamePlay::draw()

    I can build it on both Desktop(also simulator) and Symbian device, but it'll crash some where.



  • k, I have change it as you said... but still the same errors are there...

    did you get the output?



  • no, it's OK for me. Maybe there have some problem with your environment or SDK, i'm not sure. You can paste the log on this thread, i think someone can resolve your problem



  • how to get the log? I couldn't copy the error, it's disabled...!
    There is no log file in the debug directory..

    Is it would work if I re-install the SDK



  • Have you added #include <gl.h> yourself? If so there is no need, QGLWidget takes care of all that for you. I seem to think there can be issues if OpenGL headers and Windows headers are #include'd in the wrong order.



  • No, I didn't add them... now I'm re-installing the Qt SDK...



  • [quote author="Dinesh Balu" date="1306142398"]No, I didn't add them... now I'm re-installing the Qt SDK...[/quote]

    Good luck :-)



  • Um.... Let's see... what if it's still not working :(



  • I have re-installed the SDK... Now the errors are gone ,.. and application is running successfully.. except I'm not getting the exact output....

    @Chuck.Gao : what was the output you got with the project?

    The Project type is Qt Mobile Application , doesn't it support OpenGL and should I go for OpenGL ES...



  • The mobile use OpenGL ES, but not OpenGL.
    Output for what ? Sorry, i can't see anything until the application crash.



  • [quote author="Chuck.Gao" date="1306134308"]no, it's OK for me. Maybe there have some problem with your environment or SDK, i'm not sure. You can paste the log on this thread, i think someone can resolve your problem[/quote]

    You said that you got my app running on your sdk... right?
    did you get any output in that?

    I have drawn a triangle in that app...

    how to use OpenGL ES with QT



  • I can build it on both Desktop(also simulator) and Symbian device, but it’ll crash some where.
    Qt will use OpenGL ES automatically if you build Symbian based application.



  • [quote author="Chuck.Gao" date="1306221357"]I can build it on both Desktop(also simulator) and Symbian device, but it’ll crash some where.
    [/quote]

    You mean the application that I sent you will crash somewhere,...

    [quote author="Chuck.Gao" date="1306221357"]Qt will use OpenGL ES automatically if you build Symbian based application.
    [/quote]

    Then why is it not working.... I got the simulator window opened but the triangle is not drawn on the screen...



  • That's for you to debug. It's your app. Run it in the debugger and see why it crashes.



  • When I started debugging...
    A Warning is shown..
    It says..

    bq. The preferred debugger engine for debugging binaries of type 'x86-windows-msvc2008-pe-32bit' is not available.
    The debugger engine 'Gdb engine' will be used as a fallback.
    Details:There is no CDB binary available for binaries in format 'x86-windows-msvc2008-pe-32bit'

    What does that mean?



  • Which build are you trying to debug? Desktop/simulator/symbian? I would try getting it working on the desktop first.



  • [quote author="ZapB" date="1306222858"]Which build are you trying to debug? Desktop/simulator/symbian? I would try getting it working on the desktop first.[/quote]

    That was Qt Simulator -> N900 simulator

    I tried that with desktop simulator,... It says Debugging starts..
    It does nothing...

    No window appears... no output...

    This is a Qt Mobile application...



  • Can you try building your app for the desktop target (not the desktop mobile simulator) and debugging that. You should have all the tools needed to debug that.



  • That was the desktop target...

    This is the report when I interrupt debugging...

    bq. Debugging starts
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x0 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x0 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)
    (Internal error: pc 0x4 in read in psymtab, but not in symtab.)

    if you don't mind of testing my app yourself, I can mail you the project.... do you?



  • Guys I got it .....

    I didn't use show function... now only i did...

    Thanks for all your help..... :D



  • I have one more problem...

    In this project , I'm drawing a triangle in center of the screen...

    The project clears the screen with the color I specified , but it doesn't draw the triangle...

    Here is the code...

    @GamePlay::GamePlay(QWidget *parent) :
    QGLWidget(parent)
    {
    setFormat(QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer));
    }

    void GamePlay::initializeGL()
    {
    qglClearColor(Qt::green);

    }

    void GamePlay::resizeGL(int width,int height)
    {
    glViewport(0,0,width,height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    GLfloat x = GLfloat(width) / height;
    glFrustum(-x, x, -1.0, 1.0, 4.0, 15.0);
    glMatrixMode(GL_MODELVIEW);
    }
    void GamePlay::paintGL()
    {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    draw();
    }

    void GamePlay::draw()
    {
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0,0,-10.0f);
    glBegin(GL_TRIANGLES);
    qglColor(Qt::red);
    glVertex3f(-0.5f,-0.5f,0);
    glVertex3f(0,-0.5f,0);
    glVertex3f(0.5f,-0.5f,0);
    glEnd();
    }@



  • First strait OpenGL isn't trivial and isn't for most people, just knowing how to program in C/C++ and the OpenGL api isn't enough you need a background in advanced mathematics. Also if your doing things in the wrong order or if your not in the right mode at the correct time you will end up with a different result than what you expected. When programming in OpenGL you have to think of it in a procedural mind set. Post a link to your complete source code if you want help.


Log in to reply
 

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