Conceptos y definiciones: Render Target

Render Target


Un Render Target es un recurso que apunta hacia un grafico como un buffer de dibujo secundario al back buffer. Los Render Target se comportan de igual manera que el back buffer a la hora de dibujar sobre ellos ya que se usan exactamente las mismas rutinas de dibujo pudiendo aplicar los mismos efectos gráficos: transparencias, rotaciones, etc...

Los Render Targets están pensados para crear escenas o composiciones complejas y estáticas, que no varían, que requieren varias llamadas en tiempo de ejecución y que consumen mucha memoria rebajando la velocidad del programa. Dichas composiciones solo necesitarían ser pintadas una vez mediante el Render Target. Después, tan solo deberá pintar el grafico asociado al Render Target en la escena principal, lo que esta dibujando sobre el back buffer, ahorrando así varias llamadas y cálculos.

Un uso interesante de este sistema podría ser pintar textos mediante DRAW_Text, ya que como se explica en dicha función esta consume muchos recursos y rebaja severamente el rendimiento del programa. Si necesita pintar muchos textos estáticos, que no variara su contenido en tiempo de ejecución, puede pintar dichos textos en un grafico o varios independientes (uno por cada cadena de texto). Después solo tendría que pintar el grafico sobre el que pinto la cadena de texto, siendo este método mas rápido y fluido. Este método se puede aplicar a muchos otros usos.

Un consejo, los Render Target no están preparados para ser usados en tiempo real. No pinte sobre un Render Target dentro del bucle principal del programa ya que esto bajaría el rendimiento del programa severamente debido a los accesos de escritura y lectura del grafico asociado al Render Target. Realice las operaciones de dibujo en el Render Target en tiempos de carga, antes de entrar en el bucle principal por ejemplo, o en momentos puntuales dentro del bucle principal.

Las funciones para trabajar con los Render Target son: TARGET_Create, TARGET_Destroy, TARGET_Open y TARGET_Close