/////////////////////////////////////////////////
//Main.cpp
#include <GL/glut.h>
struct point2D{
GLfloat x,y;
};
void Init()
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-100,100,-100,100);
glMatrixMode(GL_MODELVIEW);
}
void DrawTriangle(point2D *pts)
{
GLint i;
glBegin(GL_TRIANGLES);
for(i=0;i<3;i++)
glVertex2f(pts[i].x, pts[i].y);
glEnd();
}
void Render()
{
point2D pts[3]={{-50.0,-25.0 },{50.0,-25.0},{0.0,50.0}};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0 , 1); //Change color to blue
glViewport(0,0,300,300); //SetViewport1
glPushMatrix(); //Push matrix
glRotatef(2.0f,0.0f,0.0f,1.0f); //Rotate in z axis
DrawTriangle(pts); //DrawObject
glPopMatrix(); //Pop matrix
glColor3f(1, 0 , 0); //Change color to red
glViewport(300,0,300,300); //SetViewport2
glPushMatrix(); //Push matrix
glRotatef(2.0f,1.0f,0.0f,0.0f); //Rotate in x axis
DrawTriangle(pts); //Pop matrix
glPopMatrix();
glFlush();
}
void Idle()
{
glutSwapBuffers();
glutPostRedisplay();
}
void main(int args, char **argv)
{
glutInit(&args,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(600,300);
glutCreateWindow("Test vieports in GLUT");
Init();
glutDisplayFunc(Render);
glutIdleFunc(Idle);
glutMainLoop();
}
/////////////////////////////////////////////////