[Tutorial] I - "HelloWorld" del OpenGL
Página 1 de 1.
[Tutorial] I - "HelloWorld" del OpenGL
Bienvenido al mundo del OpenGL. Si tienes instalado un compilador de C, y la librería GLUT 3.5 o superior.
En el caso de Linux, con poner esto en el terminal debería bastar:
El código de un primer ejemplo de Open GL para PC:
En el caso de Linux, para poder compilarlo necesitas añadir -lglut. Un ejemplo concreto si llamas al código: main.c
Ahora explicaré el código, no preocuparse por las cosas que van a quedar sin explicar en esta lección, todo será explicado a su debido tiempo.
Examinemos el código según es ejecutado. Tienes que entender que GLUT no funciona como el código C normal, estamos trabajando también con la tarjeta gráfica, y es GLUT quien se encarga de administrarlo.
glutInit(&argc, argv); Sencillamente inicia GLUT
iniciarGlut(); es una función que solo es ejecutada una vez, y contiene:
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); Se decide cúantos y cómo serán los buffers utilizados (ya se explicarña que es buffer)
glutInitWindowSize(480,272); Se indica el tamaño de la ventana donde trabajaremos
glutInitWindowPosition(100,100); Se indica en qué posición de la pantalla se colocará esa ventana
glutCreateWindow("OpenGL"); Definitivamente creamos la ventana, dándole un nombre
glutReshapeFunc(reseteoProj); Llama a una función que contenga comandos GLUT relacionados con la proyección. Contiene en este caso:
glMatrixMode(GL_PROJECTION); Es un comando que decide qué parte del GLUT configuramos, en este caso es GL_PROJECTION, donde decidiremos como se proyectará nuestro dibujo
glLoadIdentity(); Resetea los datos de GLUT relacionados con el modo que hemos abierto.
glOrtho(0,8,0,5,-10,10); Se dedice que la proyección es ortogonal (no se deforman los objetos al alejarse), ya lo explicaré
glutDisplayFunc(pintarEscena);
glMatrixMode(GL_MODELVIEW); Otro modo es el GL_MODELVIEW, para el modelado de figuras
glClear(GL_COLOR_BUFFER_BIT); Limpiamos la pantalla con negro
glBegin(GL_QUADS); Empezamos la creacion de un cuadrilátero (GL_QUADS)
glColor3f(1.0f,0.0f,0.0f); Indicamos el color del vértice
glVertex3f(0.0f,0.0f,0.0f); Indicamos la posición del vértice en el espacio XYZ
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(8.0f,0.0f,0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(8.0f,5.0f,0.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(0.0f,5.0f,0.0f);
glEnd(); Acabamos de definir cómo será ese cuadrilátero
glFlush(); Acabados los cálculos de GLUT, los imprimimos en pantalla
glutMainLoop(); Crea un bucle infinito que repite los glut...Func() indefinidamente
Hasta la próxima, donde ya empezaremos a ir por partes y despacio.
En el caso de Linux, con poner esto en el terminal debería bastar:
- Código:
sudo apt-get install build-essential libglu1-mesa-dev freeglut3-dev mesa-common-dev
El código de un primer ejemplo de Open GL para PC:
- Código:
#include <GL/glut.h>
void iniciarGlut()
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(480,272);
glutInitWindowPosition(100,100);
glutCreateWindow("OpenGL");
}
void reseteoProj()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,8,0,5,-10,10);
}
void pintarEscena()
{
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(0.0f,0.0f,0.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(8.0f,0.0f,0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(8.0f,5.0f,0.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(0.0f,5.0f,0.0f);
glEnd();
glFlush();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
iniciarGlut();
glutReshapeFunc(reseteoProj);
glutDisplayFunc(pintarEscena);
glutMainLoop();
return 0;
}
En el caso de Linux, para poder compilarlo necesitas añadir -lglut. Un ejemplo concreto si llamas al código: main.c
- Código:
gcc main.c -o main -lglut
Ahora explicaré el código, no preocuparse por las cosas que van a quedar sin explicar en esta lección, todo será explicado a su debido tiempo.
Examinemos el código según es ejecutado. Tienes que entender que GLUT no funciona como el código C normal, estamos trabajando también con la tarjeta gráfica, y es GLUT quien se encarga de administrarlo.
glutInit(&argc, argv); Sencillamente inicia GLUT
iniciarGlut(); es una función que solo es ejecutada una vez, y contiene:
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); Se decide cúantos y cómo serán los buffers utilizados (ya se explicarña que es buffer)
glutInitWindowSize(480,272); Se indica el tamaño de la ventana donde trabajaremos
glutInitWindowPosition(100,100); Se indica en qué posición de la pantalla se colocará esa ventana
glutCreateWindow("OpenGL"); Definitivamente creamos la ventana, dándole un nombre
glutReshapeFunc(reseteoProj); Llama a una función que contenga comandos GLUT relacionados con la proyección. Contiene en este caso:
glMatrixMode(GL_PROJECTION); Es un comando que decide qué parte del GLUT configuramos, en este caso es GL_PROJECTION, donde decidiremos como se proyectará nuestro dibujo
glLoadIdentity(); Resetea los datos de GLUT relacionados con el modo que hemos abierto.
glOrtho(0,8,0,5,-10,10); Se dedice que la proyección es ortogonal (no se deforman los objetos al alejarse), ya lo explicaré
glutDisplayFunc(pintarEscena);
glMatrixMode(GL_MODELVIEW); Otro modo es el GL_MODELVIEW, para el modelado de figuras
glClear(GL_COLOR_BUFFER_BIT); Limpiamos la pantalla con negro
glBegin(GL_QUADS); Empezamos la creacion de un cuadrilátero (GL_QUADS)
glColor3f(1.0f,0.0f,0.0f); Indicamos el color del vértice
glVertex3f(0.0f,0.0f,0.0f); Indicamos la posición del vértice en el espacio XYZ
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(8.0f,0.0f,0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(8.0f,5.0f,0.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(0.0f,5.0f,0.0f);
glEnd(); Acabamos de definir cómo será ese cuadrilátero
glFlush(); Acabados los cálculos de GLUT, los imprimimos en pantalla
glutMainLoop(); Crea un bucle infinito que repite los glut...Func() indefinidamente
Hasta la próxima, donde ya empezaremos a ir por partes y despacio.
Temas similares
» [Tutorial C] I - "HelloWorld"
» [Tutorial C++] I - "HelloWorld++"
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial] II.3 - glutTimerFunc()
» [Índice] Tutoriales de OpenGL
» [Tutorial C++] I - "HelloWorld++"
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial] II.3 - glutTimerFunc()
» [Índice] Tutoriales de OpenGL
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|