i am reading Programming with Qt:2nd edition. in it is this code which uses QGLWidget for OpenGL drawing. i have compiled and run this same exact code with no problem. i must say that back then i had KDE installed. now when i try to run the same code i get some opengl drawing artifacts when resizing the window. i don’t think it should have anything to do with KDE, however, the code is the same as it was. Does anyone know why this happens?
#include <qapplication.h>
#include <stdlib.h>
#include <qgl.h>
class SierpinskiWidget : public QGLWidget
{
public:
virtual void paintGL();
virtual void initializeGL();
virtual void resizeGL( int w, int h );
};
void SierpinskiWidget::paintGL()
{
typedef GLfloat point2[2];
point2 vertices[3] = {{ 0.0,.0},{200.0,175.00},{400.0,0.0}}; // triangle
point2 p = { width()/2.0, height()/2.0 }; // initial point
glClear( GL_COLOR_BUFFER_BIT );
/* Compute and plot 5000 new points */
for( int k = 0; k < 5000; k++ ) {
int j = rand() % 3; // pick a random vertex
// Compute the point between the vertex and the old point
p[0] = ( p[0] + vertices[j][0] ) / 2.0;
p[1] = ( p[1] + vertices[j][1] ) / 2.0;
// Plot new point
glBegin( GL_POINTS );
glVertex2fv( p );
glEnd();
}
glFlush();
}
void SierpinskiWidget::initializeGL()
{
glClearColor( 1.0, 1.0, 1.0, 1.0 );
glColor3f( 1.0, 0.0, 0.0 );
}
void SierpinskiWidget::resizeGL( int w, int h )
{
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D( 0.0, w, 0.0, h );
glMatrixMode( GL_MODELVIEW );
updateGL();
}
int main( int argc, char* argv[] )
{
QApplication::setColorSpec( QApplication::CustomColor );
QApplication a(argc,argv);
SierpinskiWidget* w = new SierpinskiWidget();
w->resize( 400, 350 );
a.setMainWidget( w );
w->show();
return a.exec();
}