CComponent_GUI_Texture

Otro componente interesante relacionado con el render es mostrar una interfaz gráfica de usuario por medio de una “capa” mostrada en nuestra pantalla. Se podrán mostrar texturas (implementado en este componente) y texto (no implementado aún) de tal forma que se ajusten de manera cómoda a la pantalla.

gui

El funcionamiento de este componente tiene 2 partes: una nueva funcionalidad en el Render y otra parte en el componente en sí:

  • En el Render, se ha definido una nueva cámara, llamada __GUI_Camera, encargada de renderizar el contenido de los componentes GUI. Dicha cámara se caracteriza por tener una proyección del tipo ortográfica en el origen de nuestro mundo. Por tanto, se renderizarán de la siguiente forma:
1. Desactivar el buffer de profundidad (GL_DEPTH_BUFFER).
2. Ajustar el viewport de la pantalla.
3. Cargar matriz ortográfica en la matriz GL_PROJECTION.
4. Para cada componente GUI hallado en el primer recorrido de objetos (main camera):
   5. Renderizar el componente GUI.

  • En el componente GUI se guarda un color, una textura o material, un ancho y un alto (valores entre 0 y 1) y un offset dado por píxeles. Y ahora decimos… ¿Cómo se guarda la posición de la textura en la pantalla? Para ello, usamos el componente Transform, que nos serviará para guarda la posición en pantalla (X e Y con valores entre 0 y 1, siendo el 0 la izquierda, el 1 la derecha para la X, y el 0 abajo y el 1 arriba para la Y, y un valor de Z que nos dirá qué elementos GUI van delante y cuales van detrás (uno con un valor Z menor que otro se dibujará después que otro), la escala (como se expande la textura o texto) y la rotación (como se rota el elemento con respecto a su centro). Para el renderizado, se hace lo siguiente:
1. Trasladarse a la posición dada por el componente Transform del objeto (position).
2. Rotar por un ángulo dado por el componente Transform del objeto (angle).
3. Escalar por un factor dado por el componente Transform del objeto (scale).
4. Seleccionar textura y color.
5. Dibujar aplicando offsets.
Advertisements