OpenGL C++ 3D SHAPES

I want to create a 3D shape and a 3D sphere below it but when I run it only my 3D square show and not my 3D sphere.


#include <GL\glut.h>
GLfloat xRotated, yRotated, zRotated;

void init(void)
{
    glClearColor(1, 1, 1, 0);

}

void DrawCube(void)
{

    glMatrixMode(GL_MODELVIEW);
    // clear the drawing buffer.
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -10.5);
    glRotatef(xRotated, 1.0, 0.0, 0.0);
    // rotation about Y axis
    glRotatef(yRotated, 0.0, 1.0, 0.0);
    // rotation about Z axis
    glRotatef(zRotated, 0.0, 0.0, 1.0);
    glBegin(GL_QUADS);        // Draw The Cube Using quads
    glColor3f(1.0f, 1.0f, 0.0f);    // Color Yellow
    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, 1.0f, 0.0f);    // Color Yellow
    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, 1.0f, 0.0f);    // Color Yellow  
    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);    // Color Yellow
    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)
    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)
    glColor3f(1.0f, 1.0f, 0.0f);    // Color Yellow
    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, 1.0f, 0.0f);    // Color Yellow
    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();            // End Drawing The Cube


    glFlush();
}
//------------------------------  Draw_Spheres   -------------------------------

void Draw_Spheres(void)
{
    glMatrixMode(GL_MODELVIEW);
    glClear(GL_COLOR_BUFFER_BIT );
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -15.0);

    glColor3f(0.8, 0.2, 0.1);              // Red ball displaced to left.
    glPushMatrix();
    glTranslatef(-1.5, 0.0, 0.0);
    glRotatef(60.0, 1, 0, 0);
    glRotatef(zRotated*2.0, 0, 0, 1);   // Red ball rotates at twice the rate of blue ball.
    glutSolidSphere(1.0, 20, 50);
    glPopMatrix();

        glutSwapBuffers();
}




void animation(void)
{

    yRotated += 0.01;
    xRotated += 0.02;
    DrawCube();
    Draw_Spheres();
}


void reshape(int x, int y)
{
    if (y == 0 || x == 0) return;  //Nothing is visible then, so return
    //Set a new projection matrix
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //Angle of view:40 degrees
    //Near clipping plane distance: 0.5
    //Far clipping plane distance: 20.0

    gluPerspective(40.0, (GLdouble)x / (GLdouble)y, 0.5, 20.0);
    glMatrixMode(GL_MODELVIEW);
    glViewport(0, 0, x, y);  //Use the whole window for rendering
}

int main(int argc, char** argv) {

    glutInit(&argc, argv);
    //we initizlilze the glut. functions
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(800, 700);
    glutInitWindowPosition(700, 200);
    glutCreateWindow(argv[0]);
    init();
    glutDisplayFunc(DrawCube);
    glutDisplayFunc(Draw_Spheres);
    glutReshapeFunc(reshape);
    //Set the function for the animation.
    glutIdleFunc(animation);
    glutMainLoop();
    return 0;
}

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.