Polygons

 Problem 1 Create an Open GL application called GreenTriang to test triangles in Open GL.Cree una aplicación de Open GL llamada GreenTriang para probar los triángulos en Open GL.

 GreenTriang.cpp ... bool GreenTriang::RenderScene() {      glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0f, 10.0f, 0.1f, //The position of the eye point           0.0f, 0.0f, 0.0f, //The position of the reference point           0.0f, 1.0f, 0.0f); //The direction of the up vector.      glColor3f(0.0f, 1.0f, 0.0f);      glBegin(GL_TRIANGLES);           glVertex3f(-4.0f, -4.0f, 0.0f);           glVertex3f(3.0f, -3.0f, 2.0f);           glVertex3f(0.0f, 0.0f, 0.0f);      glEnd();      return true; // return false to stop }

 Problem 2 Create an Open GL application called PinkPolygon to test polygons in Open GL.Cree una aplicación de Open GL llamada PinkPolygon para probar los polígonos en Open GL.

 PinkPolygon.cpp ... bool PinkPolygon::RenderScene() {      //____________________________________________________ Polygon      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0, 10.0, 0.1, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);      static float angle = 0.0f;      glPolygonMode(GL_FRONT, GL_LINE); // glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);      glPushMatrix();      glTranslatef(-4.0f, 0.0f, 0.0f);      glRotatef(angle, 0.0f, 0.0f, 1.0f); //glRotatef(angle, 0.0f, 1.0f, 0.0f);      glColor3f(1.0f, 0.5f, 0.5f);      glBegin(GL_POLYGON);      glVertex3f(-1.5f, 0.0f, 0.0f);      glVertex3f(1.5f, 0.0f, 0.0f);      glVertex3f(1.5f, 0.0f, -2.0f);      glVertex3f(-1.5f, 0.0f,-2.0f);      glEnd();      glPopMatrix();      angle += 2.0f;      if (angle >= 360.0) angle -= 360.0;      return true; // return false to stop }

glPushMatrix and glPopMatrix

glPushMatrix stores the current matrix to preserve the state of the matriz. Usually, you should use glPushMatrix before calling glTranslate and glRotate. A call to glPopMatrix restores the matrix to its original state.
glPushMatrix almacena la matriz corriente para preservar el estado de la matriz. Usualmente, usted debe llamar glPushMatrix antes de llamar glTranslate y glRotate. Una llamada a glPopMatrix restablece la matriz a su estado previo..

Quad

A quad describes a surface of four points in a 3D space.
Un quad describe una superficie de cuatro puntos en un espacio 3D.

 Problem 3 Create an Open GL application called RedQuad to test quads in Open GL.Cree una aplicación de Open GL llamada RedQuad para probar los quads en Open GL.

 RedQuad.cpp ... bool RedQuad::RenderScene() {      //_______________________________________________ Quads      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(10.0f, 10.0f, 10.0f, 10.0f, 10.0f, 0.0f, 0.0f, 1.0f, 0.0f);      glColor3f(1.0f, 0.0f, 0.0f);      glPushMatrix();           glTranslatef((GLfloat)(-80.0), (GLfloat)(-80.0), -250.0f);           glBegin(GL_QUADS);                glVertex3f(0.0f, 0.0f, 0.0f); // left bottom                glVertex3f(0.0f, 50.0f, 0.0f); //left top                glVertex3f(50.0f, 50.0f, 0.0f); //right top                glVertex3f(150.0f, 0.0f, 0.0f); //right bottom           glEnd();      glPopMatrix();      return true; // return false to stop }

Triangle Strip

It is a collection of triangles to create a 3D surface. Most 3D object are drawn using triangles because there are efficient algorithms to draw triangles.
Es una colección de triángulos para crear una superficie 3D. La mayoría de los objetos en 3D usan triángulos porque existen algoritmos eficientes para dibujar triángulos.

 Problem 4 Create an Open GL application called BoxCyan to test triangle strips in Open GL.Cree una aplicación de Open GL llamada BoxCyan para probar las bandas de triángulos en Open GL.

 BoxCyan.cpp ... bool BoxCyan::RenderScene() {      //_______________________________________________ Triangle Strip      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0f, 10.0f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);      glPushMatrix();           glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);           glTranslatef(-6.0f, 0.0f, 0.5f);           for (int x = 0; x < 3; x++)           {                glBegin(GL_TRIANGLE_STRIP);                //___________________________________________ Color                if (x == 0) glColor3f(0.0f, 1.0f, 1.0f);                else if (x == 1) glColor3f(0.0f, 1.0f, 0.0f);                else if (x == 2) glColor3f(1.0f, 0.0f, 0.0f);                //___________________________________________                for (int z = 0; z < 3; z++)                {                     glVertex3f((GLfloat)x, 0.0f, (GLfloat)z);                     glVertex3f((x+1.0f), 0.0, (GLfloat)z);                     glVertex3f((GLfloat)x, 0.0f, (z+1.0f));                     glVertex3f((x+1.0f), 0.0f, (z+1.0f));                }                glEnd();           }      glPopMatrix();      return true; // return false to stop }