-
Notifications
You must be signed in to change notification settings - Fork 16
/
sfml.c++.txt
112 lines (99 loc) · 6.66 KB
/
sfml.c++.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
SFML
STRING ET SF::STRING #STRING fait référence à std::string, et SF::STRING à
==> #sf::string.
PAQUET ==> #libsfml-dev (version 1.6)
HEADERS ==> # - <SFML/Audio.hpp>
# - <SFML/Network.hpp>
# - <SFML/System.hpp>
# - <SFML/Window.hpp>
# - <SFML/Graphics.hpp>
LIBRARIES ET LINKING # - libsfml-audio.so
==> # - libsfml-network.so
# - libsfml-system.so
# - libsfml-window.so
# - libsfml-graphics.so
#Donc options de compilation : -lsfml-audio,
#-lsfml-network, -lsfml-system, -lsfml-window,
#-lsfml-graphics.
#Mettre d'abord les libraries dont les headers incluent
#les autres :
# Network --+
# Audio --+--> System
# Graphics --> Window --+
# |
# +--> GL
# +--> GLU
#Par ailleurs, pas besoin de les mettre en fait, si
#elles sont incluent par d'autres.
#Enfin, <SFML/Window.hpp> inclue aussi GL et GLU.
DÉPENDANCES ==> #mesa, X11, Xrandr, OpenGL, GLU, Freetype, OpenAL,
#SNDFile
NAMESPACE ==> #Toutes les classes sont précédées du namespace sf::
BINDINGS ==> #Il en existe en C, Python, Ruby, .NET
APERCU RAPIDE ==> #La définition de WINDOW.IsOpened() donne une idée de la
#boucle principale graphique.
INEGRATION VIDEO ==> #Il y a un wrapper pour ffmpeg ici : http://www.sfml-
#dev.org/wiki/en/sources/video_integration
#Mais le mieux serait d'apprendre moi-même ffmpeg
#(attention aux usages commerciaux avec ffmpeg)
TIPS POUR CREATION DE # - Avoir une classe gérant les states (splash screen,
JEU ==> # menu principal, exploration, etc.)
# - Avoir une classe gérant l'allocation des ressources
# (fonts, textures, sons, etc.) : chargement, ajout,
# recherche, suppression, etc., pour s'assurer qu'une
# ressource n'est toujours chargée qu'une fois (sinon
# fera ramer le jeu)
# - Utiliser une structure contenant toutes les actions
# possibles et leur touche clavier et/ou souris et/ou
# joypad button associé ; et créer une fonction
# testant l'Event courant par rapport à cette
# structure :
# - if ( testEv(Event, ActionStructure["Tirer"]) )
# Tirer();
# Ainsi il est possible de modifier simplement les
# bindings, et d'associer plusieurs types
# d'événements (clavier, souris, etc.) sans que cela
# apparaisse dans le code principal.
# - ils ont l'air d'utiliser des .DAT files, qui sont
# des fichiers concaténant de manière binaire
# plusieurs ressources liées (par exemple images),
# avec un header indiquant l'offset, le nom et la
# taille de chaque fichier.
# Une classe gère la création de .DAT (en prenant
# comme argument des chemins de fichiers), ainsi que
# le renvoi d'un pointeur vers la ressource (utilisé
# par LoadFromMemory()) en prenant un .DAT file et
# une string en argument ; ainsi que le renvoi de la
# taille de la ressource.
# Peut aussi être utilisé pour des fichiers config à
# encrypter (pour éviter la triche)
# - Si plusieurs fenêtres sont lancées (en théorie de
# différent type), prévoir une classe pour chaque
# type de fenêtre, héritant d'une même base classe,
# et une classe gestionnaire de fenêtres.
# - classe encapsulant une animation de Sprites (play
# NextImage(), Pause(), Reset(), constructor, etc.).
# - Clock pouvant être stoppée
/=+===============================+=\
/ : : \
)==: A FAIRE :==(
\ :_______________________________: /
\=+===============================+=/
IMPORTANT :
sf::SoundRecorder, sf::SoundBufferRecorder (besoin d'un micro)
beaucoup de choses en networking
intégration avec Gtkmm
OPENGL :
sf::PostFX (GLSL) (change en sf::Shader pour SFML 2.0)
sf::Context, RENDERTARGET.PreserveOpenGLStates()
sf::Matrix3, et les deux fonctions liés aux Matrix3 pour sf::Drawable
MOINS IMPORTANT :
sf::Joy, sf::Event::JoyButtonEvent, sf::Event::JoyMoveEvent, INPUT.IsJoystickButtonDown() et INPUT.GetJoystickAxis(), WINDOW.SetJoystickThreshold
FONT.LoadFromMemory() et IMAGE.LoadFromMemory() (dont constructor)
IMAGE.GetTexCoords() et IMAGE.GetValidTextureSize()
SPRITE.Render() (hérité de DRAWABLE) ?
CLASSFK de sf::Unicode (besoin de connaître std::locale)
sf::Glyph et FONT.GetGlyph()
sf::ResourcePtr