| 5. Proyecciones ortogonales |
|
|
| Videojuegos - Curso de Programación de juegos | |||||||||||||||||||||||||||||||||||||||||||||||||||
| Escrito por Vicengetorix | |||||||||||||||||||||||||||||||||||||||||||||||||||
En esta entrega veremos como cambiar la proyeccion de nuestra escena sobre la pantalla de acuerdo con nuestras necesidades, de forma que seremos capaces de dibujar escenas en 2D controlando el sistema de coordenadas.Empezaremos con la proyeccion ortografica u ortogonal. ¿Que es una proyeccion ortografica? ummm... ¿como explicarlo? ¿y para que? Si en internet ya esta casi todo. En estos enlaces aclaran las cosas: Ortografica , ortogonal. Como se ve en la wikipedia, lo importante del concepto es que las lineas que se proyectan sobre el plano en que estamos dibujando (papel o la ventana de nuestro programa) son perpendiculares a este mismo plano y por tanto paralelas entre si. ![]() Esta proyeccion nos serviria, por ejemplo, para un juego en isometrica (un caso de proyeccion ortogonal) o para graficos en 2D en los que las cordenadas X e Y de los vertices coincidirian con los pixels de nuestra ventana Windows y la coordenada Z seria siempre la misma (en el caso de nuestro codigo ejemplo, 0 ). Ahora modificamos nuestro programa. El meollo del asunto sera en la funcion IniciaGL(). Usaremos algo de programacion Windows para ajustar bien el tamaño del viewport al de nuestra ventana:
Ahora definimos la proyeccion ortogonal:
Una pequeña explicacion de la funcion glOrtho(...): Sus 4 primeros parametros delimitan el cuadrado donde se proyecta la escena. Los 2 ultimos parameros delimitan el rango del eje Z, profundidad, dentro del que se pintaran las cosas. (en nuestro caso lo que se encuentre entre -1 y 1 sera visible, fuera de este rango no). Graficamente: ![]() Y ahora la funcion glOrtho(...) correspondiente: glOrtho(xwmin, xwmax, ywmin, ywmax, pcerca, plejos); Despues viene una parte de codigo para poder ver el tañano que tiene finalmente nuestro viewport y nuestra proyeccion (ya que los valores dependen del area cliente de la ventana):
Finalmente nos vamos a la funcion Pinta() y modificamos todas las coordenadas para ajustarlas a la nueva proyeccion. Pongo de ejemplo solo el triangulo principal:
Notaras que la esquina derecha del triangulo se sale de la ventana. Esto es porque el lado inferior es de 600 pixels de longitud, lo mismo que la ventana, y el area cliente de la venana es un poco mas pequeña al ser la ventana menos el borde. El programa se veria asi: ![]() Y el codigo completo seria: usw5.cpp
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
|||||||||||||||||||||||||||||||||||||||||||||||||||


En esta entrega veremos como cambiar la proyeccion de nuestra escena sobre la pantalla de acuerdo con nuestras necesidades, de forma que seremos capaces de dibujar escenas en 2D controlando el sistema de coordenadas.



