Página principal | Módulos | Lista de componentes | Miembros de las clases | Ejemplos

Transformaciones y ViewPorts
[Render]


Funciones

void LOV_Render::ClearViewPort (byte pR, byte pG, byte pB)
 Limpia el ViewPort con un color.
bool LOV_Render::SetViewPort (int pX, int pY, int pWidth, int pHeight)
 Configura el ViewPort.
bool LOV_Render::SetAntialiasing (bool pSwitch)
 Activa / desactiva el antialiasing para primitivas.
void LOV_Render::SetTransform (int pX, int pY, float pAngleX, float pAngleY, float pAngleZ, float pScaleX, float pScaleY, bool pCull, bool pBlockCull, int pAxisCalX, int pAxisCalY, bool pMirrorX, bool pMirrorY, LOV_Filter pFilter, int pWidth, int pHeight, LOV_Matrix *pMatrix)
 Transformaciones.

Descripción detallada

Estos métodos de LOV_Render definen la transformación (paso al marco o viewport, rotación, traslación, escalado, descarte, hotspot, filtro y espejado) del siguiente objeto gráfico que vaya a ser renderizado por LooverLib.

El método SetTransform() puede parecer rudimentario y aparatoso debido a la gran cantidad de parámetros que contiene. En realidad esta pensado para ser utilizad sobre una lista de objetos gráficos.

Por eso es recomendable (a no ser que desees tu mismo gestionar esa lista) usar la clase LOV_Entity2dManager, que internamente utiliza esta función a la misma vez que gestiona una lista de objetos gráficos.

De esto modo mediante el uso de entidades se pueden aplicar transformaciones de manera más intuitiva (ver consejos acerca de cómo usar LooverLib y uso de LOV_Entity2dManager (entidades)) .


Documentación de las funciones

void LOV_Render::ClearViewPort byte  pR,
byte  pG,
byte  pB
[inline, inherited]
 

Limpia el ViewPort con un color.

Parámetros:

  • pR Byte R (Rojo)
  • pG Byte G (Verde)
  • pB Byte B (Azul)
Funcionamiento:

Esta función limpia el ViewPort a un color expresado en RGB.

bool LOV_Render::SetViewPort int  pX,
int  pY,
int  pWidth,
int  pHeight
[inline, inherited]
 

Configura el ViewPort.

Parámetros:

  • pX Coordenada x de la esquina superior izquierda del ViewPort
  • pY Coordenada y de la esquina superior izquierda del ViewPort
  • pWidth Anchura del ViewPort
  • pHeight Altura del ViewPort
Funcionamiento:

Esta función devuelve 1 (cierto) si se crea un ViewPort (marco) en la posición y tamaño especificados como parámetros.

El ViewPort es la región de dibujo. Por defecto LooverLib se inicializa con un ViewPort que ocupa toda la ventana, pero utilizando este método puede definirse uno distinto.

Una vez utilizado el método, todos los gráficos que se dibujen a continuación se dibujaran en dicho ViewPort y si está activado el descarte de bloques (ver el parámetro pBlockCull en SetTransform()) se aplicará dicho descarte a todos los bloques que queden fuera del ViewPort.

Para usar varios marcos, basta cor ir definiendo cada uno de ellos y después dibujar los gráficos que contengan.

Este método devuelve 0 (falso) si el ViewPort que se intenta crear queda fuera de la ventana.

bool LOV_Render::SetAntialiasing bool  pSwitch  )  [inline, inherited]
 

Activa / desactiva el antialiasing para primitivas.

Parámetros:

  • pSwitch Activación/Desactivación (1 = activa antialiasing, 0 = desactiva antialiasing)
Funcionamiento:

Esta función activa o desactiva el antialiasing en el dibujo de primitivas. No afecta a otros gráficos, solo a las primitivas.

El aliasing consiste en los bordes aserrados que presentan las primitivas gráficas debido a la discretización en píxeles de la pantalla. El aliasing suaviza dichos bordes aserrados a costa de un detrimento en la velocidad.

La función devolverá 1 si el antialiasing se activa o desactiva y 0 si la tarjeta aceleradora no soporta dicho antialiasing.

void LOV_Render::SetTransform int  pX,
int  pY,
float  pAngleX,
float  pAngleY,
float  pAngleZ,
float  pScaleX,
float  pScaleY,
bool  pCull,
bool  pBlockCull,
int  pAxisCalX,
int  pAxisCalY,
bool  pMirrorX,
bool  pMirrorY,
LOV_Filter  pFilter,
int  pWidth,
int  pHeight,
LOV_Matrix pMatrix
[inline, inherited]
 

Transformaciones.

Parámetros:

  • pX Traslación en el eje x. La posición (0,0) corresponde a la esquina superior izquierda del ViewPort
  • pY Traslación en el eje y. La posición (0,0) corresponde a la esquina superior izquierda del ViewPort
  • pAngleX Ángulo de rotación en el eje x expresado en grados.
  • pAngleY Ángulo de rotación en el eje y expresado en grados.
  • pAngleZ Ángulo de rotación en el eje z expresado en grados.
  • pScaleX Nivel de escalado en el eje x. 1 para mantener el tamaño normal.
  • pScaleY Nivel de escalado en el eje y. 1 para mantener el tamaño normal.
  • pCull Descarte de caras posteriores. (1 / 0) = (activado / desactivado). Este parámetro es interesante desactivarlo cuando rotamos el objeto gráfico en el eje de la x o de la y. Es decir, cuándo se ve la cara posterior del gráfico. Así se puede dibujar por ejemplo la hoja de un árbol que cae rotando y muestra ambas caras en su descenso hasta el suelo. En cualquier otro caso este parámetro debe estar activado (1) pues se gana mucha velocidad evitando que la tarjeta aceleradora dibuje las caras posteriores de los polígonos.
  • pBlockCull Cuándo este parámetro esta activado (valor 1), aquellos bloques de la superficie que vayan a dibujarse fuera del ViewPort se descartan, logrando así un alto incremento en la velocidad para superficies muy grandes divididas en muchos bloques (por ejemplos scrolls). El descarte que se realiza es muy avanzado, tiene en cuenta la rotación, traslación y escalado de la superficie. Por lo que se pueden utilizar scrolls rotados y escalados realizándose un descarte de los bloques no visibles perfecto. Para imágenes sencillas (sprites, fondos quietos, animaciones, etc), y que no tengan tendencia a dibujarse fuera del ViewPort, este parámetro debe ser 0, pues el algoritmo de descarte solo es eficaz para imágenes muy grandes (scrolls) ó para situaciones en las que una gran cantidad de imágenes salga y entre del ViewPort.
    cull.png

    Scroll escalado y rotado con pBlockCull (descarte de bloques) activado. Los bloques que quedan fuera del ViewPort (granates) se descartan.

  • pBlockCull pAxisCalX y pAxisCalY Parámetros que indican el desplazamiento que debe sufrir el objeto gráfico debido al hotspot. Estos parámetros son calculados por el método CalculeAxis() (tanto en LOV_SurfaceManager, como en LOV_AnimationManager). Si no se ha especificado un hotspot, se debe usar 0 para ambos, indicando de este modo que las transformaciones se hacen con respecto a la esquina superior izquierda del objeto.
  • pMirrorX Espejado (flip o mirror) en x. (1 / 0) = (activado / desactivado). Este parámetro dibuja el objeto "volteándolo" en el eje de las x.
  • pMirrorY Espejado (flip o mirror) en y. (1 / 0) = (activado / desactivado). Este parámetro dibuja el objeto "volteándolo" en el eje de las y.
  • pFilter Tipo de filtro LOV_Filter. Se pueden usar dos tipos de filtros que se aplican sobre el objeto gráfico cuando este sufre una rotación o escalado: LOV_FILTER_POINT (filtro nearest point). Menor calidad, pero mayor rapidez. Se puede usar sin pérdida de calidad en objetos gráficos que no roten o se vean afectados por un escalado. LOV_FILTER_LINEAR (filtro linear). Mayor calidad, pero menor rapidez. Utilizado en objetos gráficos que rotan o se ven afectados por un escalado.
  • pWidth Ancho del objeto gráfico que se va a dibujar a continuación. Se aconseja usar el método GetWidth() del objeto en cuestión.
  • pHeight Alto del objeto gráfico que se va a dibujar a continuación. Se aconseja usar el método GetHeight() del objeto en cuestión.
  • pMatrix Puntero a una matriz LOV_Matrix. En este parámetro se devuelve por referencia opcionalmente la matriz de transformación de mundo que se aplicará al siguiente objeto que se vaya a dibujar. Esta matriz puede se utilizada para programadores avanzados que deseen obtener la descripción algebraica exacta de la transformación efectuada. Se puede utilizar 0 como valor del parámetro sino se desea obtener dicha matriz.
Funcionamiento:

Esta función define la transformación (rotación, traslación, escalado, descarte, hotspot, filtro y espejado) del siguiente objeto gráfico que vaya a ser renderizado por LooverLib. Es decir, debe ser utilizada antes de que dibujar cada objeto gráfico para colocarlo en el sitio y con la configuración que le corresponda.

El método puede parecer rudimentario y aparatoso debido a la gran cantidad de parámetros que contiene. En realidad esta pensado para ser utilizad sobre una lista de objetos gráficos.

Por eso es recomendable (a no ser que desees tu mismo gestionar esa lista) usar la clase LOV_Entity2dManager, que internamente utiliza esta función a la misma vez que gestiona una lista de objetos gráficos.

De esto modo mediante el uso de entidades se pueden aplicar transformaciones de manera más intuitiva (ver consejos acerca de cómo usar LooverLib y uso de LOV_Entity2dManager (entidades)) .


Generado el Tue Feb 1 19:57:16 2005 para LooverLib por  doxygen 1.3.9.1
pixel art games