En Mini2DX, la carga y renderizado de gráficos es un aspecto fundamental para dar vida a nuestros juegos. Para comenzar, lo primero que hacemos es preparar nuestras imágenes dentro de la carpeta Assets, eliminando cualquier imagen de muestra y añadiendo las que vamos a utilizar, como por ejemplo sprite.png y una hoja de sprites con varios gráficos.
Para cargar una imagen, utilizamos la clase Texture, que proviene de libGDX, la base sobre la que se construye Mini2DX. Creamos un objeto de tipo Texture y lo inicializamos con la ruta de la imagen, pero siempre debemos hacerlo en un método que se ejecute después de la inicialización del motor, evitando hacerlo en el constructor o en los métodos render y update para no sobrecargar el juego. Por ejemplo:
Texture sprite;
@Override
public void initialize() {
sprite = new Texture("sprite.png");
}
Una vez cargada la textura, para dibujarla en pantalla usamos el método drawTexture de la clase Graphics. Aquí es importante tener en cuenta que Mini2DX utiliza un sistema de coordenadas diferente al de libGDX: el punto (0,0) está en la esquina superior izquierda, no en la inferior izquierda como en libGDX. Esto significa que si dibujamos en (0,0), la imagen aparecerá en la parte superior izquierda de la pantalla.
Podemos cambiar el color de fondo con el método setBackgroundColor, usando la clase Color de libGDX para definir el color deseado. Por ejemplo, para un gris claro:
graphics.setBackgroundColor(Color.LIGHT_GRAY);
Si la imagen es muy pequeña, podemos usar la versión de drawTexture que permite especificar el ancho y alto para escalarla al tamaño deseado.
Cuando trabajamos con hojas de sprites, es común querer dibujar solo una parte de la imagen. Para ello, usamos la clase TextureRegion de libGDX, que nos permite definir un recorte de la textura original. Creamos una región indicando la textura base, la posición inicial del recorte y el tamaño del área que queremos extraer:
TextureRegion region = new TextureRegion(texture, x, y, width, height);
Luego, para dibujar esta región, usamos drawTextureRegion de Graphics, pasando la región y las coordenadas donde queremos dibujarla. Sin embargo, hay un problema conocido con este método: la imagen aparece invertida verticalmente. Esto es un bug reconocido en Mini2DX que aún no ha sido corregido oficialmente.
Para solucionar este problema, podemos usar el método flip de TextureRegion para invertir la región manualmente antes de dibujarla:
region.flip(false, true);
Otra alternativa más sencilla es utilizar la clase Sprite de Mini2DX, que internamente maneja esta inversión automáticamente. Los sprites permiten cargar texturas o regiones y ofrecen métodos para modificar su posición, escala, rotación y color, facilitando mucho la manipulación gráfica. Por ejemplo, para crear y dibujar un sprite:
Sprite sprite = new Sprite(region);
sprite.setPosition(100, 100);
sprite.setScale(4);
sprite.setRotation(60);
graphics.drawSprite(sprite);
Además de imágenes y sprites, la clase Graphics nos permite dibujar formas básicas como círculos, líneas, segmentos y rectángulos. Hay dos tipos de métodos para estas formas: los que comienzan con drawf, que dibujan solo el contorno, y los que comienzan con fill, que dibujan la forma rellena. Por ejemplo, para dibujar un rectángulo con contorno y otro relleno:
graphics.drawRect(50, 20, 150, 100); // contorno
graphics.fillRect(50, 100, 150, 100); // relleno
También podemos dibujar texto en pantalla con el método drawString, indicando la posición donde queremos que aparezca:
graphics.drawString("Hola Mini2DX", 170, 20);
Para personalizar los colores de las formas y textos, usamos setColor de Graphics, pasando un color de libGDX. Por ejemplo, para dibujar un rectángulo azul y un texto verde:
graphics.setColor(Color.BLUE);
graphics.fillRect(50, 100, 150, 100);
graphics.setColor(Color.GREEN);
graphics.drawString("Texto verde", 170, 20);
Con estas herramientas básicas, podemos empezar a trabajar con gráficos en Mini2DX, cargando imágenes, manejando regiones y sprites, y dibujando formas y textos con control sobre colores y posiciones. La clase Graphics ofrece muchas más funcionalidades para explorar, pero estos conceptos son esenciales para dar los primeros pasos en la creación visual de nuestros juegos.