Bonjour tout le monde,
Je suis assez nouveau sur fedora pour ne pas dire complètement débutant et j'ai voulu refaire ce que je faisais sur Ubuntu. Je vais donc essayer de vous expliquer si cela n'a pas déjà été fait les étapes d'installation du compilateur gcc, g++, les librairie de développement d'OpenGL et de la librairie que j'utilise pour créer mon contexte OpenGL : SFML (
http://www.sfml-dev.org/index.php).
Je vous laisse découvrir cette librairie très intéressante qui ne fait pas que créer un contexte OpenGL.
1ère étape :
Installation des compilateurs gcc et g++.
#yum install gcc
#yum install gcc-c++
2ème étape :
Installation des librairies utiles pour OpenGL et SFML (attention j'utilise les librairies 64bits si vous n'êtes pas sur un système 64bits prenez la librairie adéquat).
#yum install freeglut-devel.x86_64 libX11-devel.x86_64 libXrandr-devel.x86_64 freetype-devel.x86_64 openal-soft.x86_64 libsndfile-devel.x86_64
3ème étape :
Nous allons maintenant installer la librairie SFML2 (dernière version) à partir du dépôt svn. Pour cela nous installons subversion :
#yum install subversion
Puis nous téléchargeons les sources avec cette commande :
svn co https://sfml.svn.sourceforge.net/svnroot/sfml sfml
Nota : une fois téléchargé vous pourrez mettre à jour les sources en rentrant dans le dossier sfml et en tapant :
svn up
Une fois les sources récupérés nous allons dans le dossier sfml/branches/sfml2 et il suffit de taper :
make
puis,
#make install
Le fichier makefile va copier dans le dossier /usr/local/lib/ les fichiers librairies et dans le dossier /usr/local/include/SFML/ les fichiers headers de la librairie.
Pour que l'on puisse utiliser la librairie, il faut pour cela mettre à jour le cache des librairies (Merci a Pikachu pour son astuce que je cherchais)
Pikachu_2014 wrote:Crée un fichier nommé disons local.conf dans le répertoire /etc/ld.so.conf.d/, qui contiendrait l'unique ligne suivante :
/usr/local/lib
Lancez ensuite la commande ldconfig en root, de façon à ce que les lib. dynamiques dans /usr/local/lib soient mises en cache et désormais chargées au besoin.
puis nous changeons les droits des fichiers pour que vous puissiez en tant qu'utilisateur utiliser la librairie :
#chmod 755 /usr/lib/libsfml-*
#chmod -R 755 /usr/include/SFML/
4ème étape :
Logiquement à partir de maintenant vous pouvez utiliser SFML. Faisons un test avec un code OpenGL qui utilise SFML :
////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <GL/glu.h>
////////////////////////////////////////////////////////////
/// Entry point of application
///
/// \return Application exit code
///
////////////////////////////////////////////////////////////
int main()
{
// Create the main window
sf::Window App(sf::VideoMode(800, 600, 32), "SFML OpenGL");
// Create a clock for measuring time elapsed
sf::Clock Clock;
// Set color and depth clear value
glClearDepth(1.f);
glClearColor(0.f, 0.f, 0.f, 0.f);
// Enable Z-buffer read and write
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
// Setup a perspective projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.f, 1.f, 1.f, 500.f);
// Start game loop
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
// Escape key : exit
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
App.Close();
// Resize event : adjust viewport
if (Event.Type == sf::Event::Resized)
glViewport(0, 0, Event.Size.Width, Event.Size.Height);
}
// Set the active window before using OpenGL commands
// It's useless here because active window is always the same,
// but don't forget it if you use multiple windows or controls
App.SetActive();
// Clear color and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Apply some transformations
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.f, 0.f, -200.f);
glRotatef(Clock.GetElapsedTime() * 50, 1.f, 0.f, 0.f);
glRotatef(Clock.GetElapsedTime() * 30, 0.f, 1.f, 0.f);
glRotatef(Clock.GetElapsedTime() * 90, 0.f, 0.f, 1.f);
// Draw a cube
glBegin(GL_QUADS);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f( 50.f, 50.f, 50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(50.f, -50.f, -50.f);
glVertex3f(50.f, 50.f, -50.f);
glVertex3f(50.f, 50.f, 50.f);
glVertex3f(50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, 50.f);
glEnd();
// Finally, display rendered frame on screen
App.Display();
}
return EXIT_SUCCESS;
}
Remarquez les fichiers headers :
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <GL/glu.h>
Le fichiers de la librairie SFML, window.hpp permets de créer une fenêtre, OpenGL.hpp permets d'intégrer les headers pour OpenGL et glut par contre si vous utilisez comme dans l'exemple des fonctions GLU, il faut rajouter l'entête GL/glu.h.
Maintenant nous allons compiler notre exemple :
g++ -c window-opengl.cpp
puis,
g++ -Wall -lsfml-window -lsfml-system -lGLU window-opengl.o -o window-opengl
Je vous laisse regarder sur le site officiel de SFML pour les arguments de la compilation tel que -lsfml-window et -lsfml-system et remarquez encore une fois que nous devons ajouter si nous utilisons GLU l'argument -lGLU au niveau de la compilation alors qu'il est inutile de mettre -lglut ni -lGL qui sont automatiquement géré par l'inclusion de la librairie SFML.
Il ne reste plus qu'a exécuter notre beau programme :
./window-opengl
Vous devriez voir un beau cube tout blanc qui tourne.
Voilà c'est la fin de ce tutoriel sur l'installation de OpenGL et SFML, si vous avez des questions ou des rectifications à me soumettre, je suis à votre disposition (j'ai pu omettre sans le vouloir l'installation de paquet, merci de me signaler tout ça 😉)
Liens utiles :
http://www.sfml-dev.org/index-fr.php /* Site Officiel */
http://www.sfml-dev.org/wiki/fr/index /* Wiki Officiel */
http://www.sfml-dev.org/forum-fr/ /* Forum Officiel */