Social Icons

Wednesday, 16 July 2014

Open GL Program to draw various primitives

#include<GL/gl.h>
#include<GL/glut.h>

int flag=0;
void display()
{
glClearColor(0.0,0.0,1.0,0.0);
   glClear(GL_COLOR_BUFFER_BIT );
   if(flag==0)
   {
     glBegin(GL_TRIANGLES);
     glColor3f(1.0,0.0,0.0);
     glVertex2f(0.0,0.4);
     glVertex2f(-0.4,-0.4);
     glVertex2f(0.4,-0.4);
     glEnd();
   }
   else if(flag==1)
   {
     glBegin(GL_QUADS);
     glColor3f(0.0,1.0,0.0);
     glVertex2f(0.2,0.2);
     glVertex2f(-0.2,0.2);
     glVertex2f(-0.2,-0.2);
     glVertex2f(0.2,-0.2);
     glEnd();
   }
   else if(flag==2)
   {
     glBegin(GL_POLYGON);
     glColor3f(1.0,1.0,0.0);
     float cx=0.0,cy=0.0,r=0.5,theta;
     int num_segments=40,i;
     for(i=0;i<num_segments;i++)
     {
        theta=(2*3.14*i)/num_segments;
        float x=r * cosf(theta);
        float y=r * sinf(theta);
        glVertex2f(cx+x,cy+y);                       
     }
     glEnd();
   }
   glFlush();
}

void processNormalKeys(unsigned char key,int x,int y)
{
     if(key=='Q' || key=='q')
     {
          flag=1;
     }
     else if(key=='t' || key=='T')
     {
          flag=0;
     }
     else
     {
         flag=2;
     }
     glutPostRedisplay();
}
void processSpecialKeys(int key, int x, int y)
 {
   
    if(key== GLUT_KEY_F1)
    {
             flag=2;
             }
             glutPostRedisplay();
}
int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
   glutInitWindowSize (500, 500);
   glutInitWindowPosition (150, 150);
   glutCreateWindow ("Primitives");
   glutDisplayFunc(display);
   glutKeyboardFunc(processNormalKeys);
   glutSpecialFunc(processSpecialKeys);
   glutMainLoop();
   return 0;
}



                                                         OUTPUT

                               

No comments:

Post a Comment