Interfície OpenGL

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 5

OpenGL. Primitivas y atributos.

Computación Gráfica
Empecemos con algunos comandos básicos de OpenGL. OpenGL tiene sus propios tipos en cuanto a variables se refiere. Así aunque podemos usar
los típicos (int, float, double), nos acostumbraremos a los definidos por esta librería (GLint, GLfloat, GLdouble) Como se ven son los mismos pero con
el prefijo "GL" delante. Se declaran exactamente igual que cualquier variable en java y tienen casi las mismas propiedades. Usémoslos porque el
funcionamiento general del sistema será más óptimo.
Las funciones OpenGL empiezan con el prefijo "gl", en minúsculas.
Veamos un ejemplo. Supongamos que queremos crear un vértice, es decir, un punto:
Usaremos:
glVertex3f( 0.0 , 0.0 , 0.0 );
o:
GLfloat vértice[3] = { 0.0, 0.0, 0.0 };
glVertexfv( vértice );
Ambas funciones crean un vértice situado en el origen de coordenadas del mundo, es decir, x = y = z = 0.0. En el primer caso el nombre de la función
termina en "3f" (3 floats). Esto significa que vamos a especificar el vértice con 3 valores o variables de tipo real, o sea float. En cambio en el segundo
caso tenemos "fv" (float vector). Estamos indicando a OpenGL que el vértice lo daremos mediante un array/vector de floats. Precisamente este es el
array que defino justo antes de llamar a la función.
Trabajamos en 3D y especificamos las coordenadas del vértice en este orden: X, Y, Z. Si deseamos trabajar en 2D solo tenemos que hacer una coordenada igual a 0.0,
normalmente la Z.
Ya que estamos puestos vamos a definir nuestro primer polígono, un triángulo. OpenGL tiene varios tipos definidos de manera que nos facilita la creación de polígonos
simples.
Vamos allá:
glBegin(GL_TRIANGLES);
glVertex3f( -1.0, 0.0, 0.0 );
glVertex3f( 1.0, 0.0, 0.0 );
glVertex3f( 0.0, 1.0, 0.0 );
glEnd( );
Este código crea un triángulo situado en el plano XY ya que observamos que los valores de Z son todos 0.0 para los tres vértices que lo forman. Sus tres vértices se
encuentran en las posiciones ( -1.0, 0.0 ), ( 1.0, 0.0 ) y (0.0, 1.0 ) según la forma ( X, Y).
Vamos a definir alguno de los atributos de nuestro triángulo, por ejemplo su color. Usamos:

glColor3f( 0.5, 0.5, 0.5 );

donde los tres valores (floats) que se le pasan a la función glColor son por orden, la cantidad de rojo (Red) que deseamos, la cantidad de verde (Green) y la cantidad de
azul (Blue). Es el llamado sistema RGB que muchos conoceréis sobradamente. Colores

Aplicando una cantidad de cada color conseguimos el tono deseado (Teoría aditiva del color). Los valores de cada color deben estar entre 0.0 (No aplicar ese color) y
1.0 (Aplicar ese color en su máxima intensidad). Por tanto:

glColor3f( 0.0, 0.0, 0.0 ); //se corresponde con el color NEGRO

mientras que...

glColor3f( 1.0, 1.0, 1.0 ); //se corresponde con el BLANCO

y de esta manera si queremos definir un triángulo blanco haremos:

glColor3f( 1.0, 1.0, 1.0 );


glBegin( GL_TRIANGLES );
glVertex3f( -1.0, 0.0, 0.0 );
glVertex3f( 1.0, 0.0, 0.0 );
glVertex3f( 0.0, 1.0, 0.0 );
glEnd( );

...de manera que primero especificamos el color y TODO lo que dibujemos a partir de este momento será de ese color, en este caso el triángulo.
Respecto a las constantes que podemos usar en la función glBegin tenemos entre otras:

• GL_POINTS : para que todos los vértices indicados entre ambas funciones se dibujen por separado a modo de puntos "libres".
• GL_LINES : cada dos vértices definidos, se traza automáticamente una línea que los une.
• GL_POLYGON : se unen todos los vértices formando un polígono.
• GL_QUADS : cada 4 vértices se unen para formar un cuadrilátero.
• GL_TRIANGLES : cada 3 vértices se unen para formar un triángulo.

Otras funciones de las figuras

• glTranslatef( posX, posY, posZ ): función que nos traslada posX unidades en el eje X, posY en el eje Y.
• glClearColor( 0.0, 0.0, 0.0, 0.0 ): esta es algo genérica y se refiere al color con el cual debe de "resetearse" el frame buffer cada vez que redibujemos toda la escena de
nuevo. En este caso el "fondo" de nuestra ventana será como el fijado por esta función en el frame buffer, de color negro. El cuarto parámetro de la función se refiere al
valor de "alpha" en cuanto al color. Veremos mas adelante que el valor de alpha permite variar el grado de transparencia de un objeto.
• glColor3f( 1.0, 0.0, 0.0 ): En este caso definimos que todo lo que se dibuje desde este momento será de color rojo.

También podría gustarte