test-3ds/source/main.c
2021-03-17 01:04:29 +01:00

73 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file main.c
* @author rick <rick@gnous.eu>
* date 2021
* @licence GPL3
*/
#include <citro2d.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct
{
C2D_Sprite spr;
float x, y;
} sprite ;
int main(int argc, char *argv[])
{
/* initialisation du driver RomFS */
romfsInit();
/* init le framebuffer de lécran avec des paramètres par défaut */
gfxInitDefault();
/* init la lib C3D avec la taille du buffer par défaut */
if (!C3D_Init(C3D_DEFAULT_CMDBUF_SIZE))
printf("Erreur lors de linitialisation de C3D.\n");
/* init la lib C2D avec le max de sprites possible / frame */
if(!C2D_Init(C2D_DEFAULT_MAX_OBJECTS))
printf("Erreur lors de linitialisation de C2D.\n");
/* prépare le GPU pour du rendu 2D */
C2D_Prepare();
/* init la console sur lécran du bas avec la console actuelle */
consoleInit(GFX_BOTTOM, NULL);
/* on créé une cible de rendu pour lécran du haut (on le "créé")
* On utilise le coté gauche car le droit nest utilisé quen 3D */
C3D_RenderTarget *top = C2D_CreateScreenTarget(GFX_TOP, GFX_LEFT);
/* on récupère la feuille des sprites générée par le Makefile */
C2D_SpriteSheet sprite_sheet = C2D_SpriteSheetLoad("romfs:/gfx/sprites.t3x");
if (!sprite_sheet)
svcBreak(USERBREAK_PANIC);
sprite m_blue;
m_blue.x = 0;
m_blue.y = 0;
C2D_SpriteFromSheet(&m_blue.spr, sprite_sheet, 0);
//C2D_SpriteSetCenter(&m_blue.spr, 0.5f, 0.5f);
C2D_SpriteSetPos(&m_blue.spr, m_blue.x, m_blue.y);
//C2D_SpriteSetRotation(&m_blue.spr, C3D_Angle(0.0f));
while (aptMainLoop())
{
/* attend que la frame précédente soit afficher avant de rendre la suivante */
C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
/* nettoye lécran avec la couleur passée en paramètre */
C2D_TargetClear(top, C2D_Color32f(0.0f, 0.0f, 0.0f, 1.0f));
/* prépare à écrire sur lécran top, définit le buffer où écrire */
C2D_SceneBegin(top);
/* dessine le sprite */
C2D_DrawSprite(&m_blue.spr);
/* on indique la fin de la frame */
C3D_FrameEnd(0);
}
/* nécessaire pour nettoyer la mémoire et les buffers */
C2D_SpriteSheetFree(sprite_sheet);
C2D_Fini();
C3D_Fini();
gfxExit();
romfsExit();
return 0;
}