Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


simple cube creation using opengl Qt


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 phani433   Members   -  Reputation: 100

Like
0Likes
Like

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..


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();
}


Sponsor:

#2 JustinDaniel   Members   -  Reputation: 137

Like
1Likes
Like

Posted 15 March 2012 - 06:05 AM

What you see in the computer is Only 2D so, if you have placen the cube straight ahead you will only see a Square, To see the 3D shape probably try using
glRotatef( 45, 0, 1, 0 );

That will bring a 3D looking model ;)

#3 phani433   Members   -  Reputation: 100

Like
0Likes
Like

Posted 15 March 2012 - 07:32 AM

Thanks for your valuble reply now i am seeing my cube in 3d manner..how to create rotating cube with time

#4 JustinDaniel   Members   -  Reputation: 137

Like
0Likes
Like

Posted 15 March 2012 - 08:35 AM

Thanks for your valuble reply now i am seeing my cube in 3d manner..how to create rotating cube with time

That'd be simple, just create a variable and update it, pass it to the Rotate function.
double angle = 0.0;
glRotatef(angle, 0, 1, 0);
//Init...
angle++;


#5 phani433   Members   -  Reputation: 100

Like
0Likes
Like

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..

#6 JustinDaniel   Members   -  Reputation: 137

Like
1Likes
Like

Posted 15 March 2012 - 11:47 PM

That is because you are rotating only in the Y- direction, Try changing to Z or X direction or both.
glRotatef(angle, 1, 0, 0);
// or
glRotatef(angle. 0, 0, 1);


#7 phani433   Members   -  Reputation: 100

Like
0Likes
Like

Posted 15 March 2012 - 11:54 PM

i tried it but i am unable to see the green color..tell me one thing with out rotation and tanslate(static cube)..which face is visible..

#8 JustinDaniel   Members   -  Reputation: 137

Like
0Likes
Like

Posted 16 March 2012 - 12:05 AM

i tried it but i am unable to see the green color..tell me one thing with out rotation and tanslate(static cube)..which face is visible..

If the cubes not rotating , then its obvious that the front face will only be visible.

#9 phani433   Members   -  Reputation: 100

Like
0Likes
Like

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();
}


#10 JustinDaniel   Members   -  Reputation: 137

Like
0Likes
Like

Posted 16 March 2012 - 12:58 AM

Really? It works for me, I tried the code and the front face is red, See if you have projected the matrix properly.

#11 phani433   Members   -  Reputation: 100

Like
0Likes
Like

Posted 16 March 2012 - 01:37 AM

could you please send me the code what ever you are trid

#12 Talei   Members   -  Reputation: 267

Like
0Likes
Like

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS