Primeros pasos con OpenGL

Open Graphics Library (OpenGL) es una API multilenguaje (independiente del idioma), multiplataforma (independiente de la plataforma) para renderizar gráficos vectoriales 2D y 3D (uso de polígonos para representar imágenes). La API de OpenGL está diseñada principalmente en hardware. 

  • Diseño: Esta API se define como un conjunto de funciones que pueden ser llamadas por el programa cliente. Aunque las funciones son similares a las del lenguaje C , es independiente del lenguaje.
  • Desarrollo: es una API en evolución y Khronos Group lanza regularmente su nueva versión con algunas características extendidas en comparación con la anterior. Los proveedores de GPU también pueden proporcionar alguna funcionalidad adicional en forma de extensión.
  • Bibliotecas asociadas: la primera versión se publica con una biblioteca complementaria denominada biblioteca de utilidades OpenGL. Pero dado que OpenGL es un proceso bastante complejo. Entonces, para hacerlo más fácil, se agrega otra biblioteca, como OpenGL Utility Toolkit, que luego es reemplazada por free glut. Más tarde, la biblioteca incluida fue GLEE, GLEW y gliding.
  • Implementación: Mesa 3D es una implementación de código abierto de OpenGL. Puede hacer renderizado de software puro y también puede usar aceleración de hardware en BSD, Linux y otras plataformas aprovechando la infraestructura de renderizado directo.

Instale OpenGL en Ubuntu
Para instalar OpenGL en Ubuntu, simplemente ejecute el siguiente comando (como instalar cualquier otra cosa) en la terminal: 

sudo apt-get install freeglut3-dev

Para trabajar en el sistema operativo Ubuntu: 

gcc filename.c -lGL -lGLU -lglut 
where filename.c is the name of the file
with which this program is saved.

Instale OpenGL en Windows en Code::Blocks 

  1. Descarga el bloque de código e instálalo
  2. Vaya al enlace y descargue el archivo zip desde el enlace de descarga que aparece después del paquete freeglut MinGW con el nombre del enlace Descargar freeglut 3.0.0 para MinGW y extráigalo.
  3. Abra el bloc de notas con ejecutar como administrador y abra el archivo desde 
    1. Esta PC > C:(C-drive) > Archivos de programa (x86) > CodeBlocks > compartir > CodeBlocks > plantillas (luego haga clic para mostrar Todos los archivos)
    2. A continuación, abra glut.cbp y busque todo glut32 y reemplácelo con freeglut .
    3. Luego, abra desde Esta PC> C: (unidad C)> Archivos de programa (x86)> CodeBlocks> compartir> CodeBlocks> plantillas> asistente> exceso (luego haga clic para mostrar Todos los archivos)
    4. Abra Wizard.script y aquí, también reemplace todo glut32 con freeglut 
  4. Luego vaya a la carpeta freeglut (donde se descargó) y 
    1. Incluir > GL y copiar los cuatro archivos desde allí
    2. Vaya a Esta PC> C: (unidad C)> Archivos de programa (x86)> CodeBlocks> MinGW> incluir> GL y péguelo.
    3. Luego, desde la carpeta de descarga freeglut > lib, copie dos archivos y vaya a Esta PC > C:(C-drive) > Archivos de programa (x86) > CodeBlocks > MinGW > lib y péguelo.
    4. Nuevamente vaya a la carpeta descargada freeglut > bin y copie un archivo (freeglut.dll) desde aquí y vaya a Esta PC > C:(C-drive) > Windows > SysWOW64 y pegue este archivo.
  5. Ahora abre Código::Bloques. 
    1. Seleccione Archivo > Nuevo > Proyecto > Proyecto GLUT > Siguiente.
    2. Asigne cualquier título al proyecto y luego elija Siguiente.
    3. Para seleccionar la ubicación de GLUT: Esta PC > C:(C-drive) > Archivos de programa (x86) > CodeBlocks > MinGW.
    4. Pulse Aceptar > Siguiente > Finalizar.

Ahora, Code::Blocks está listo para probar el archivo OpenGL. 

Demostrar trabajar con OpenGL

Para mostrar cómo funciona OpenGL, se agrega un programa simple de dibujo circular en C usando la plataforma OpenGL.

C

// C program to demonstrate
// drawing a circle using
// OpenGL
#include<stdio.h>
#include<GL/glut.h>
#include<math.h>
#define pi 3.142857
  
// function to initialize
void myInit (void)
{
    // making background color black as first 
    // 3 arguments all are 0.0
    glClearColor(0.0, 0.0, 0.0, 1.0);
      
    // making picture color green (in RGB mode), as middle argument is 1.0
    glColor3f(0.0, 1.0, 0.0);
      
    // breadth of picture boundary is 1 pixel
    glPointSize(1.0);
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity();
      
    // setting window dimension in X- and Y- direction
    gluOrtho2D(-780, 780, -420, 420);
}
  
void display (void) 
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);
    float x, y, i;
      
    // iterate y up to 2*pi, i.e., 360 degree
    // with small increment in angle as
    // glVertex2i just draws a point on specified co-ordinate
    for ( i = 0; i < (2 * pi); i += 0.001)
    {
        // let 200 is radius of circle and as,
        // circle is defined as x=r*cos(i) and y=r*sin(i)
        x = 200 * cos(i);
        y = 200 * sin(i);
          
        glVertex2i(x, y);
    }
    glEnd();
    glFlush();
}
  
int main (int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
      
    // giving window size in X- and Y- direction
    glutInitWindowSize(1366, 768);
    glutInitWindowPosition(0, 0);
      
    // Giving name to window
    glutCreateWindow("Circle Drawing");
    myInit();
      
    glutDisplayFunc(display);
    glutMainLoop();
}

Para compilar el programa anterior en Ubuntu, 

gcc filename.c -lGL -lGLU -lglut -lm 
where filename.c is the name of the file
with which this program is saved.

La salida del programa anterior se muestra en la siguiente captura de pantalla

Referencia para la instalación en Code::Blocks: https://www.youtube.com/watch?v=NPcnymtP2SE

Este artículo es una contribución de Aditya Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *