¿Qué es OpenGL?
Es una manera de dibujar algo en 3D.El propósito de OpenGL es comunicarse con la tarjeta gráfica de la escena 3D.OpenGL funciona como un «traductor» para las tarjetas gráficas.
¿De qué manera la prestación de trabajo?
La prestación con el hardware de hoy en día significa tomar los datos de la CPU y el procesamiento en la GPU para formar una imagen en 2D. El ejemplo más básico es un triángulo en 3D:
En la de arriba no es un cubo con dos triángulos. El cubo es el espacio donde se encuentra toda la geometría que va a ser enviados a la tarjeta. El triángulo enviado es el triángulo que se envía a la tarjeta de video. Ahora observe cómo el triángulo se proyecta en la parte derecha del cubo para formar el triángulo prestados. Esta operación se conoce como rasterización y es una de las principales cosas que la tarjeta de video hace. Toma 3 (o más) puntos en el espacio y rellena el interior con los píxeles que se van a mostrar en la pantalla (en la imagen superior, la parte derecha del cubo).
Esto, por supuesto no parece realmente una representación normal, y eso es porque los puntos (que se llaman vértices) que usted envía a la tarjeta de vídeo debe de sufrir una transformación al igual que los píxeles (que se llaman fragmentos) después de que se calculan. Vamos a analizar la imagen de abajo:
Tenga en cuenta que en la parte superior tenemos una imagen de una pocas esferas como se ve desde el ojo humano. El ojo humano no ve el mundo en 3D a partir de un plano (no trate de entender esto), pero desde un punto (en realidad dos puntos ya que tenemos dos ojos, pero esto tiene poca importancia aquí). Observe cómo ahora ya no tenemos un cubo. Lo que tenemos se llama un tronco. Es importante observar que se ve como un cubo deformado y eso es porque en realidad es un cubo deformado. Las líneas laterales están apuntando a un punto (como se muestra en la imagen como una pequeña cámara) y que se supone que es en realidad el ojo humano. Lo que realmente sucede en la tarjeta de vídeo es que enviemos la geometría en un mundo en 3D, pero no se pasa a través de una transformación para simular la perspectiva. Entonces, que la geometría es trama y los fragmentos se procesan para formar la imagen resultado final (como lo has adivinado, la imagen superior).
Lo más común y se utiliza como vector, así que si usted tiene el vector (0,1,0) luego que el vector apuntará hacia arriba. Algunos programas utilizan el componente z de los vectores como el valor a como 3D Studio Max, pero sólo invirtiendo el orden de los componentes hará la corrección.
En OpenGL la cámara se queda fija en la posición 0,0,0 en la representación. Si usted quiere «mover» la cámara a la posición 5,0,0 lo que realmente hace es mover toda la geometría de -5,0,0 (la transformación inversa). Si desea mover un triángulo entonces no hay otra transformación que tendrá que aplicar. Todo en el espacio es en el «mundo» la posición. (Por ejemplo, la posición de la cámara que me he referido antes) por lo que si desea mover un objeto que se tiene que aplicar la transformación del mundo de ese objeto. La transformación del mundo es el que mueve un objeto desde el espacio modelo (el que los vértices son uno o dentro) para el espacio del mundo. Entonces aplicamos la transformación de vista que se mueve un objeto desde el espacio del mundo para el espacio de la cámara. La transformación de vista es el inverso de la cámara del mundo de transformación-¿Quiere decir que por el respeto a invertir la posición del objeto ‘s de la cámara estoy solicitando la transformación de vista?. Sólo después de esta matriz de la proyección se aplica lo que se mueva el la geometría del espacio para el espacio de la pantalla.
En las últimas fotos que vemos cómo la transformación del mundo de obras (izquierda) y entonces, ¿cómo la ve la transformación de obras (derecha). En la parte superior está la imagen renderizada con las transformaciones y en la parte inferior está la visión de la cámara y el modelo.
El canal de renderizado
En una tubería fija la forma en todas estas transformaciones se llevan a cabo está claramente definido y como el nombre lo dice, fijo. Todo funciona como una función a la que se pasan parámetros: la posición de vértice, la matriz de transformación (más sobre esto en la próxima lección), las coordenadas de textura, etc
Una tubería programable le permite cambiar no sólo los parámetros que se envían, sino también la propia función. OpenGL proporciona un lenguaje de sombreado llamado GLSL (biblioteca de gráficos lenguaje de sombreado) en el que pequeños programas se graban en tomar los datos entrantes de la CPU y modificarlo antes de crear la imagen.
El flujo de los datos es la siguiente: los datos Vertex (posición, coordenadas de la textura, las normales, tangentes)
-> Vertex Shader (este es un programa definido en GLSL) – Shader> Fragmento (otro programa definido en GLSL) -> Imagen
El vertex shader tiene tantos parámetros que el programador quiere y que puede ser de los siguientes tipos:
Atributo, esto se da por vértice
Uniforme: esto se da por comando dibujar
El vertex shader salidas algunos valores para el fragment shader. Ya que en un triángulo hay tres vértices, y entre ellos no puede haber fragmentos mucho más, los valores se interpolan entre los tres vértices. Esto significa que para cada fragmento el valor es ponderado en función de lo cerca que está a cada vértice. Estos valores se conocen como «diferentes» ‘s, ya que varían para cada fragmento. Puede definir los valores que desea la salida en el sombreado de vértices y luego utilizarlos en el fragment shader. Una variable siempre debe estar ahí y esa es la posición. Esto es usado por el hardware para saber donde está cada fragmento se coloca en la pantalla. En el fragment shader lo único que se puede modificar es el color (compuesto por el RGB y Alfa). Por ejemplo, si desea dibujar un triángulo rojo con GLSL escribe: gl_FragColor = vec4 (1.0,0.0,0.0,1.0) Como usted puede ver los valores se encuentran en el intervalo [0,1] intervalo. Los valores más altos se puede utilizar, pero esto no afectará el resultado final, ya que se sujeta.
Esta es sólo la introducción, no habrá ninguna tarea, ya que puede estar ya pesar de tragar para algunos de ustedes, yo también trató de hacer de éste uno un poco más simple, no ahondar en detalles para que usted pueda entender lo que está sucediendo a su alrededor. Me gusta mucho le agradecería la información ya que esta es la primera vez que estoy escribiendo material que no se presentan en vivo. En el siguiente tutorial vamos a ir más profundo en el lado del aprendizaje de las matemáticas todas las operaciones que se pueden realizar con vectores y matrices, como las matrices de transformación se componen y cómo se utilizan en los juegos.
Gracias!