De ce qui est écrit, les fonctions _create renvoient des structures, donc je ne comprends pas ce que tu me dis ?? Et comme je te l'ai dit j'ai fini tous les exo d'un livre en C donc je ne grille pas les étapes, et afficher une balle à l'écran n'est quand même pas compliqué c'est le tutorial de base mis dans l'installation...
Je vais essayer de regarder encore la documentation mais elle n'est pas hyper claire...
Par exemple, impossible pour moi de trouver la fonction clear et draw de window qui est elle disponible en C++ !
Le code actuel :
int main()
{
sfContextSettings * settings;
settings->antialiasingLevel = 8;
sfVideoMode mode;
mode.height = 200;
mode.width = 200;
sfWindow * window;
sfShape * shape;
window = sfWindow_create(mode, "SFML works!", sfDefaultStyle ,settings);
shape = sfCircleShape_create();
sfShape_setFillColor(shape, sfGreen);
while (sfWindow_isOpen(window))
{
sfEvent * event;
while (sfWindow_pollEvent(window, event))
{
if (sfEventType == sfEvtClosed)
{
sfWindow_close(window);
}
}
sfWindow_clear(window);
sfWindow_draw(shape);
sfRenderWindow(window);
}
return 0;
}
Il me reste juste a comprendre comment clear et draw avec les window, je ne trouve pas dans la documentation... aussi une erreur avec sfeventtype pourtant c'est bien une enumeration...
EDIT1: Après avoir fouillé partout il faut utiliser la classe renderwindow, mais pourquoi diable avoir fait deux classes pour faire une fenetre ? Quelle est la différence principale entre une render window et une window ??
Bref je progresse pas à pas...
EDIT2:
Voici le code final:
#include <SFML/Graphics.h>
int main()
{
sfContextSettings * settings;
settings = malloc(sizeof(sfContextSettings));
settings->antialiasingLevel = 8;
sfVideoMode mode;
mode.height = 200;
mode.width = 200;
sfRenderWindow * renderwindow;
sfCircleShape * shape;
renderwindow = sfRenderWindow_create(mode, "SFML works!", sfDefaultStyle ,settings);
shape = sfCircleShape_create();
sfCircleShape_setFillColor(shape, sfGreen);
while (sfRenderWindow_isOpen(renderwindow))
{
sfEvent * event;
event = malloc(sizeof(sfEvent));
while (sfRenderWindow_pollEvent(renderwindow, event))
{
if (event == sfEvtClosed)
{
sfRenderWindow_close(renderwindow);
}
}
sfRenderStates * state;
state = malloc(sizeof(sfRenderStates));
state->SfBlendMode == SfBlendNone;
sfRenderWindow_clear(renderwindow, sfBlack);
sfRenderWindow_drawCircleShape(renderwindow, shape, state);
sfRenderWindow_display(renderwindow);
}
return 0;
}
La seule chose que je ne comprends pas du tout et j'ai tres bien recherché cette fois c'est, comment afficher une shape sans avoir à mettre un sfRenderState * en argument (car je veux juste afficher ma forme avec sa couleur, sans texture ni blendmode ni transform etc etc).
(PS:j'avais eu quelques problèmes car le malloc() ne fonctionnait pas au début car évidemment c'est à la compilation que l'on connait la taille de l'union, c'est pour ca que je ne les avait pas mis, mais en fait ca fonctionne (warning).)
Une solution pour afficher un cercle sans avoir à recourir à un sfRenderState ?
Merci d'avance.