Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [Moved]Not able to use updateGL()
Qt 6.11 is out! See what's new in the release blog

[Moved]Not able to use updateGL()

Scheduled Pinned Locked Moved General and Desktop
2 Posts 2 Posters 1.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mandal.chintangmail.com
    wrote on last edited by
    #1

    I am giving the whole code of this small program which I have written. It is very necessary to use the loop as my data is supposed to kept in the loops.
    I do not want to use the qTimer() function ....
    There is no output of the program. I do not know where do I keep the updateGL().
    The program is only supposed to draw some squares in two different colors ....
    I am using Netbeans IDE.
    The GUI is shown but only with a black screen with the code.
    Give me some advise on where I should make changes ......

    Please help .....
    ;( ;( ;( ;(

    @
    #include <QtGui/QApplication>
    #include <QtOpenGL/QGLWidget>
    #include <QtGui/QColor>
    #include <QtOpenGL/qgl.h>
    #include <iostream>
    #include <time.h>
    #include "Quad.h"

    int main(int argc, char *argv[]) {
    // initialize resources, if needed
    // Q_INIT_RESOURCE(resfile);

    QApplication app(argc, argv);
    
    // create and show your widgets here
    Quad *w = new Quad();
    w->show();
    return app.exec&#40;&#41;;
    

    }

    // =================================================================================================

    #include "Point.h"
    class Quad : public QGLWidget {
    Q_OBJECT

    private:
    Point *Pt;
    int total_objects;
    protected:

    void InitializeGL() {
        // Set the way we want things to look
        glShadeModel(GL_FLAT);
        glEnable(GL_DEPTH_TEST);
        glEnable(GL_CULL_FACE);
    };
    
    void resizeGL(int Height, int Width) {
        glViewport(Width, Height, 0, 0);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glMatrixMode(GL_MODELVIEW);
    };
    
    void paintGL() {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        int counter;
        for(counter=0;counter<100;counter+=4){
            if(Pt[counter].getcol()==true){
                qglColor(Qt::red);
                glBegin(GL_QUADS);
                glVertex2f(Pt[counter].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+1].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+2].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+3].getsx(),Pt[counter].getsy());
                glEnd();
            }else{
                qglColor(Qt::white);
                glBegin(GL_QUADS);
                glVertex2f(Pt[counter].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+1].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+2].getsx(),Pt[counter].getsy());
                glVertex2f(Pt[counter+3].getsx(),Pt[counter].getsy());
                glEnd();
            }
        }
    

    // updateGL();
    };

    public:

    Quad(QWidget *parent = 0) {
        srand(time(NULL));
        int counter;
        total_objects = 100;
        Pt = new Point[total_objects]();
        for (counter = 0; counter < 100; counter++) {
            Pt[counter].init((float) (rand() % 100), (float) (rand() % 100), ((rand() % 2) == 0 ? true : false));
        }
    };
    

    };

    //===============================================================================================================================

    class Point {
    private:
    float s_x;
    float s_y;
    bool col;
    public:

    Point(float sx, float sy, bool co) {
        s_x = sx;
        s_y = sy;
        col = co;
    };
    
    Point() {};
    
    void init(float sx, float sy, bool co) {
        s_x = sx;
        s_y = sy;
        col = co;
    };
    
    float getsx() {
        return s_x;
    };
    
    float getsy() {
        return s_y;
    };
    
    bool getcol() {
        return col;
    };
    

    };
    @

    1 Reply Last reply
    0
    • D Offline
      D Offline
      DeVeL-2010
      wrote on last edited by
      #2

      Hi chintu,

      there are two problems.
      Change resizeGL() to:
      @
      void resizeGL(int Height, int Width) {
      glViewport(0, 0, Width, Height);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(-200, 200, -200, 200, -1, 1);
      glMatrixMode(GL_MODELVIEW);
      };
      @
      OpenGL need a box for the scenario (glOrtho) and viewport was wrong.

      In paintGL(), your lines for drawing are wrong, change like this:
      @
      glVertex2f(Pt[counter+1].getsx(),Pt[counter+1].getsy());
      @
      As hint: you need counter+i in x and y coordinate!

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved