GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
rtri = rquad = 0.0f;
}
void GLWidget::initializeGL()
{
glClearColor(1,1,1,1);
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(1.5f,0.0f,-7.0f);
glRotatef(rtri,0.0f,1.0f,0.0f);
glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Top)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Top)
glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Quad (Top)
glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom Right Of The Quad (Top)
glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Bottom)
glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Front)
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Front)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Front)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Front)
glColor3f (1.0f,1.0f,0.0f); // Set The Color To Yellow
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Back)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Back)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Back)
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Back)
glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Left)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Left)
glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Right)
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Right)
glEnd();
rquad-=0.15f; // Decrease The Rotation Variable For The Quad
}
void GLWidget::resizeGL(int w, int h)
{
double Aspect;
// Prevent a divide by zero, when window is too short
// (you cant make a window of zero width)
if(h == 0)//altura
h = 1;
// Set the viewport to be the entire window
glViewport(0, 0, w, h);
Aspect=(double)w/(double)h;
//Reset projection matrix stack
glMatrixMode(GL_PROJECTION);
// Reset the coordinate system before modifying
glLoadIdentity();
// gluPerspective(45.0f,Aspect, 1.0, 425.0);
double Range = 10;
if (w <= h)
glOrtho(-(Range),Range,-Range/Aspect,Range/Aspect,-(Range*2),Range*2);
else
glOrtho(-(Range*Aspect),Range*Aspect,-Range,Range,-(Range*2),Range*2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
simple cube creation using opengl Qt
Started by phani433, Mar 15 2012 03:58 AM
11 replies to this topic
#1 Members - Reputation: 100
Posted 15 March 2012 - 03:58 AM
hi, i am new to opengl ..i just started one simple program of creating a cube with different colors in different sides.. i tried with the following code but it showing yellow color square..some one please tell how to make it 3D..
Sponsor:
#4 Members - Reputation: 136
Posted 15 March 2012 - 08:35 AM
That'd be simple, just create a variable and update it, pass it to the Rotate function.Thanks for your valuble reply now i am seeing my cube in 3d manner..how to create rotating cube with time
double angle = 0.0; glRotatef(angle, 0, 1, 0); //Init... angle++;
#5 Members - Reputation: 100
Posted 15 March 2012 - 08:59 PM
Thanks rotation is also working ..i had one doubt with out rotation ,transalation we can see only one side ..which side we can see with out ratation? and also i given green color to the top face but it is not showing green color..but remaining faces it showing different colors which are all i given in the program..some one please tell me why green is not showing..
#9 Members - Reputation: 100
Posted 16 March 2012 - 12:16 AM
in the program i given red for front face but with out rotation it showing yellow(which is back face).sorry for irritating you.
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
rtri = rquad = 0.0f;
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(advancecube()));
timer->start(20);
}
void GLWidget::initializeGL()
{
glClearColor(1,1,1,1);
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(1.5f,0.0f,-7.0f);
glRotatef( rquad, 0, 0, 1 );
glBegin(GL_QUADS);
glColor3f (0.0f,1.0f,0.0f); // Set The Color To Green
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Top)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Top)
glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Quad (Top)
glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom Right Of The Quad (Top)
glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange
glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Bottom)
glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Front)
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Front)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Front)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Front)
glColor3f (1.0f,1.0f,0.0f); // Set The Color To Yellow
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Back)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Back)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Back)
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Back)
glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Left)
glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Left)
glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet
glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Right)
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Right)
glEnd();
}
void GLWidget::resizeGL(int w, int h)
{
double Aspect;
// Prevent a divide by zero, when window is too short
// (you cant make a window of zero width)
if(h == 0)//altura
h = 1;
// Set the viewport to be the entire window
glViewport(0, 0, w, h);
Aspect=(double)w/(double)h;
//Reset projection matrix stack
glMatrixMode(GL_PROJECTION);
// Reset the coordinate system before modifying
glLoadIdentity();
// gluPerspective(45.0f,Aspect, 1.0, 425.0);
double Range = 10;
if (w <= h)
glOrtho(-(Range),Range,-Range/Aspect,Range/Aspect,-(Range*2),Range*2);
else
glOrtho(-(Range*Aspect),Range*Aspect,-Range,Range,-(Range*2),Range*2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void GLWidget::advancecube()
{
rquad++;
updateGL();
}
#12 Members - Reputation: 267
Posted 18 March 2012 - 10:31 AM
Source code for Qt project with OpenGL (rotating cube) that could help You is here: http://blog.lugru.co...-and-qglwidget/
Good luck.
Good luck.






