[Qt-interest] Problem using OpenGL from Qt Application

Sujan Dasmahapatra sujan.dasmahapatra at gmail.com
Tue Oct 20 15:47:46 CEST 2009


>
> it's initializeGL only I  wrongly have written it.
>
> void GraphicsView::initializeGL()
> {
> }
>
> just look at the correction I made below.With this it's not rendering my
> Graphics.
>
>
>
>   On Tue, Oct 20, 2009 at 6:50 PM, Samuel Rødal <sroedal at trolltech.com>wrote:
>
>>  Sujan Dasmahapatra wrote:
>>
>>>  Dear Friends
>>>
>>> I am trying create an OpenGL graphics from within my QT application. I am
>>> getting the openGL window but I am unable see any graphicsItem on it.See
>>> below the code snippet
>>>
>>> class GraphicsView : public QGLWidget
>>> {
>>>       Q_OBJECT
>>> public:
>>>        GraphicsView();
>>>       ~GraphicsView();
>>> protected:
>>>      void initializeGL();
>>>      void paintGL();
>>> private:
>>>  QColor trolltechGreen;
>>>        QColor trolltechPurple;
>>>
>>>    GLuint   object;
>>>    GLuint  makeobject();
>>> void quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2,
>>>              GLdouble x3, GLdouble y3, GLdouble x4, GLdouble y4);
>>>        void extrude(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
>>> };
>>>
>>> GraphicsView::GraphicsView()
>>> {
>>>   object = 0;
>>> trolltechGreen = QColor::fromCmykF(0.40, 0.0, 1.0, 0.0);
>>>    trolltechPurple = QColor::fromCmykF(0.39, 0.39, 0.0, 0.0);
>>>
>>> }
>>> GraphicsView::~GraphicsView()
>>> {
>>> }
>>>
>>> void GraphicsView::initializeGL()
>>>
>>> {
>>>  qglClearColor(trolltechPurple.dark());
>>>    object = makeObject();
>>>    glShadeModel(GL_FLAT);
>>>    glEnable(GL_DEPTH_TEST);
>>>    glEnable(GL_CULL_FACE);
>>>
>>>
>>> }
>>>
>>> void GraphicsView::paintGL()
>>> {
>>> glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
>>>    glLoadIdentity();
>>>    glTranslated(0.0, 0.0, -10.0);
>>>    glRotated(xRot / 16.0, 1.0, 0.0, 0.0);
>>>    glRotated(yRot / 16.0, 0.0, 1.0, 0.0);
>>>    glRotated(zRot / 16.0, 0.0, 0.0, 1.0);
>>>    glCallList(object);
>>>
>>> }
>>>
>>> GLuint GraphicsView::makeobject()
>>> {
>>>       GLuint list = glGenLists(1);
>>>    glNewList(list, GL_COMPILE);
>>>      glBegin(GL_QUADS);
>>>
>>>    GLdouble x1 = +0.06;
>>>    GLdouble y1 = -0.14;
>>>    GLdouble x2 = +0.14;
>>>    GLdouble y2 = -0.06;
>>>    GLdouble x3 = +0.08;
>>>    GLdouble y3 = +0.00;
>>>    GLdouble x4 = +0.30;
>>>    GLdouble y4 = +0.22;
>>>      quad(x1, y1, x2, y2, y2, x2, y1, x1);
>>>    quad(x3, y3, x4, y4, y4, x4, y3, x3);
>>>      extrude(x1, y1, x2, y2);
>>>    extrude(x2, y2, y2, x2);
>>>    extrude(y2, x2, y1, x1);
>>>    extrude(y1, x1, x1, y1);
>>>    extrude(x3, y3, x4, y4);
>>>    extrude(x4, y4, y4, x4);
>>>    extrude(y4, x4, y3, x3);
>>>      const double Pi = 3.14159265358979323846;
>>>    const int NumSectors = 200;
>>>      for (int i = 0; i < NumSectors; ++i) {
>>>        double angle1 = (i * 2 * Pi) / NumSectors;
>>>        GLdouble x5 = 0.30 * sin(angle1);
>>>        GLdouble y5 = 0.30 * cos(angle1);
>>>        GLdouble x6 = 0.20 * sin(angle1);
>>>        GLdouble y6 = 0.20 * cos(angle1);
>>>
>>>        double angle2 = ((i + 1) * 2 * Pi) / NumSectors;
>>>        GLdouble x7 = 0.20 * sin(angle2);
>>>        GLdouble y7 = 0.20 * cos(angle2);
>>>        GLdouble x8 = 0.30 * sin(angle2);
>>>        GLdouble y8 = 0.30 * cos(angle2);
>>>
>>>        quad(x5, y5, x6, y6, x7, y7, x8, y8);
>>>
>>>        extrude(x6, y6, x7, y7);
>>>        extrude(x8, y8, x5, y5);
>>>    }
>>>
>>>    glEnd();
>>>
>>>    glEndList();
>>>    return list;
>>>
>>>
>>> }
>>>
>>> void GraphicsView::quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble
>>> y2,
>>>                    GLdouble x3, GLdouble y3, GLdouble x4, GLdouble y4)
>>> {      qglColor(trolltechGreen);
>>>      glVertex3d(x1, y1, -0.05);
>>>    glVertex3d(x2, y2, -0.05);
>>>    glVertex3d(x3, y3, -0.05);
>>>    glVertex3d(x4, y4, -0.05);
>>>
>>>    glVertex3d(x4, y4, +0.05);
>>>    glVertex3d(x3, y3, +0.05);
>>>    glVertex3d(x2, y2, +0.05);
>>>    glVertex3d(x1, y1, +0.05);
>>> }
>>>
>>> void GraphicsView::extrude(GLdouble x1, GLdouble y1, GLdouble x2,
>>> GLdouble y2)
>>> {      qglColor(trolltechGreen.dark(250 + int(100 * x1)));
>>>      glVertex3d(x1, y1, +0.05);
>>>    glVertex3d(x2, y2, +0.05);
>>>    glVertex3d(x2, y2, -0.05);
>>>    glVertex3d(x1, y1, -0.05);
>>> }
>>>
>>>
>>> /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>>> // Now I am creating the instance of this openGL window in the mainwindow
>>> which is further called in  the main.
>>> // My OpenGL black color background window is coming but there's no item
>>> that I am creating using makeobject()
>>> MainWindow::startMesh()
>>> {
>>>    GraphicsView   *view = new GraphicsView(this);
>>>    view->show();
>>> }
>>>
>>
>>  Looks like void GraphicsView::initialize() should be
>> GraphicsView::initializeGL(). Does it even compile?
>>
>> --
>> Samuel
>>
>
>
>
> --
> Thanks & Regards
> S. Dasmahapatra
> B.E. (Aeronautics-Aerodynamics)
> Bangalore, India
> Ph:91-9900839788
> Office:91-80-66470248
> mail id : sujan.dasmahapatra at gmail.com
>



-- 
Thanks & Regards
S. Dasmahapatra
B.E. (Aeronautics-Aerodynamics)
Bangalore, India
Ph:91-9900839788
Office:91-80-66470248
mail id : sujan.dasmahapatra at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20091020/fa6e6407/attachment.html 


More information about the Qt-interest-old mailing list