<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mon Blog</title>
	<atom:link href="https://www.nicotouch.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.nicotouch.com</link>
	<description></description>
	<lastBuildDate>Mon, 05 Aug 2019 18:31:33 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>TMPFS : Faites vos install de machines virtuelles et vos db inserts en RAM</title>
		<link>https://www.nicotouch.com/2012/06/tmpfs-ramfs-mysql-install-machines-virtuelles-et-vos-db-inserts-en-ram/</link>
					<comments>https://www.nicotouch.com/2012/06/tmpfs-ramfs-mysql-install-machines-virtuelles-et-vos-db-inserts-en-ram/#comments</comments>
		
		<dc:creator><![CDATA[Nico]]></dc:creator>
		<pubDate>Wed, 13 Jun 2012 11:40:31 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ramfs]]></category>
		<category><![CDATA[tmpfs]]></category>
		<guid isPermaLink="false">http://www.nicotouch.com/?p=295</guid>

					<description><![CDATA[<p>Les accès disques sont souvent les goulots d&#8217;étranglements de nos systèmes. Ainsi, installer une machine virtuelle avec l&#8217;ensemble de ces logiciels, ou insérer/restaurer des tables conséquentes dans une base donnée MySQL prend parfois énormément de de temps. Afin de se débarrasser de ces contraintes pour des traitements temporaires, pourquoi ne pas utiliser la RAM de [&#8230;]</p>
The post <a href="https://www.nicotouch.com/2012/06/tmpfs-ramfs-mysql-install-machines-virtuelles-et-vos-db-inserts-en-ram/">TMPFS : Faites vos install de machines virtuelles et vos db inserts en RAM</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img class="size-full" title="RAM" src="/img/ram.png" alt="RAM"></p>
<p>Les accès disques sont souvent les goulots d&rsquo;étranglements de nos systèmes.</p>
<p>Ainsi, installer une machine virtuelle avec l&rsquo;ensemble de ces logiciels, ou insérer/restaurer des tables conséquentes dans une base donnée MySQL prend parfois énormément de de temps.</p>
<p>Afin de se débarrasser de ces contraintes pour des traitements temporaires, pourquoi ne pas utiliser la RAM de votre machine ?</p>
<h2>RAMFS</h2>
<p>Sous Linux, on disposait déjà de RAMFS pour monter des volumes qui se réservent une part de RAM. Cependant, il a 2 inconvénient majeurs&nbsp;:</p>
<ul>
<li>Celui-ci ne tient pas compte de la limite de taille du volume. Ainsi même avec un volume réservé à 2Go sur 4Go de RAM par exemple, le système vous laisse écrire au-delà de cette limite… Rendant vos fichiers illisibles.</li>
<li>Vous êtes limité à la taille de la RAM, tout en sachant que si vous atteignez certaines limites, votre système devient instable.</li>
</ul>
<h2>TMPFS</h2>
<p>Depuis le noyau 2.6, Linux intègre TMPFS et contrairement à son prédécesseur&nbsp;:</p>
<ul>
<li>Il respecte la taille du volume défini.</li>
<li>Il permet de définir des volumes plus grands que la RAM en utilisant intelligemment le SWAP.</li>
</ul>
<p>Attention cependant&nbsp;: vous écrivez en RAM&nbsp;, ce volume sera donc vidé au reboot du système.</p>
<h2>Comment utiliser&nbsp;TMPFS</h2>
<p>Connectez vous en root ou utilisez sudo.</p>
<p>Creation du volume&nbsp;:</p>
<pre lang="bash" line="1">mkdir /mnt/voltemporaire
mount -t tmpfs -o size=10000m tmpfs /mnt/voltemporaire</pre>
<p>Pour déplacer votre répertoire de données MySQL&nbsp;:</p>
<pre lang="bash" line="1">service mysql stop
cp -a /var/lib/mysql/* /mnt/voltemporaire/</pre>
<p>Editer la variable datadir de configuration MySQL :</p>
<pre lang="bash" line="1">nano /etc/mysql/my.cnf
#datadir = /mnt/voltemporaire
chown dbuser1:mysql /mnt/voltemporaire
service mysql start</pre>
<p>Faites vos inserts puis restaurez la configuration originale&nbsp;:</p>
<pre lang="bash" line="1">service mysql stop
cp -a /mnt/voltemporaire/* /var/lib/mysql/
nano /etc/mysql/my.cnf
#datadir = /var/lib/mysql
service mysql start
umount /mnt/voltemporaire</pre>The post <a href="https://www.nicotouch.com/2012/06/tmpfs-ramfs-mysql-install-machines-virtuelles-et-vos-db-inserts-en-ram/">TMPFS : Faites vos install de machines virtuelles et vos db inserts en RAM</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.nicotouch.com/2012/06/tmpfs-ramfs-mysql-install-machines-virtuelles-et-vos-db-inserts-en-ram/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Premier test de Silverlight et de WPF : Echecs d&#8217;Alice</title>
		<link>https://www.nicotouch.com/2009/10/premier-test-de-silverlight-et-de-wpf-echecs-dalice/</link>
					<comments>https://www.nicotouch.com/2009/10/premier-test-de-silverlight-et-de-wpf-echecs-dalice/#comments</comments>
		
		<dc:creator><![CDATA[Nico]]></dc:creator>
		<pubDate>Mon, 12 Oct 2009 18:45:48 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[DotNet Framework]]></category>
		<category><![CDATA[C / C++]]></category>
		<category><![CDATA[Echecs]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<guid isPermaLink="false">http://www.nicotouch.com/?p=240</guid>

					<description><![CDATA[<p>Voici un test&#160;de Silverlight et de WPF avec un jeu d&#8217;Echecs d&#8217;Alice, la particularité « d&#8217;Alice » c&#8217;est de basculer de l&#8217;autre coté du « miroir » à chaque coups :</p>
The post <a href="https://www.nicotouch.com/2009/10/premier-test-de-silverlight-et-de-wpf-echecs-dalice/">Premier test de Silverlight et de WPF : Echecs d’Alice</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></description>
										<content:encoded><![CDATA[<p>Voici un test&nbsp;de Silverlight et de WPF avec un <a href="https://nicolas.forcato.fr/echecs-alice/">jeu d&rsquo;Echecs d&rsquo;Alice</a>, la particularité « d&rsquo;Alice » c&rsquo;est de basculer de l&rsquo;autre coté du « miroir » à chaque coups :</p>
<p><a href="https://nicolas.forcato.fr/echecs-alice"><img loading="lazy" class="size-full wp-image-241" title="nicolas forcato echecs alice" src="/img/nicolas-forcato-echecs-alice.jpg" alt="nicolas forcato echecs alice" width="600" height="387"></a></p>The post <a href="https://www.nicotouch.com/2009/10/premier-test-de-silverlight-et-de-wpf-echecs-dalice/">Premier test de Silverlight et de WPF : Echecs d’Alice</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.nicotouch.com/2009/10/premier-test-de-silverlight-et-de-wpf-echecs-dalice/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>jQuery et location.href ou redirection JavaScript avec une URL</title>
		<link>https://www.nicotouch.com/2009/08/jquery-location-href-redirection-javascript-url/</link>
					<comments>https://www.nicotouch.com/2009/08/jquery-location-href-redirection-javascript-url/#comments</comments>
		
		<dc:creator><![CDATA[Nico]]></dc:creator>
		<pubDate>Sun, 30 Aug 2009 00:20:30 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">http://www.nicotouch.com/?p=183</guid>

					<description><![CDATA[<p>Je viens de chercher quelle est la fonction qui sert à faire une redirection JavaScript avec jQuery. Et bien il n&#8217;y a pas d&#8217;intérêt d&#8217;utiliser jQuery pour cela, le plus simple est de modifier l&#8217;attribut location du document de cette manière : document.location.href="http://www.web.site/"; Avec jQuery, je me suis attardé sur la fonction load(). Perdu ! [&#8230;]</p>
The post <a href="https://www.nicotouch.com/2009/08/jquery-location-href-redirection-javascript-url/">jQuery et location.href ou redirection JavaScript avec une URL</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img src="/img/jquery.png" alt="jQuery"></p>
<p>Je viens de chercher quelle est la fonction qui sert à faire une redirection JavaScript avec <a href="http://www.jquery.com">jQuery</a>.</p>
<p>Et bien il n&rsquo;y a pas d&rsquo;intérêt d&rsquo;utiliser jQuery pour cela, le plus simple est de modifier l&rsquo;attribut <code>location</code> du <code>document</code> de cette manière :</p>
<pre lang="Javascript">document.location.href="http://www.web.site/";</pre>
<p>Avec jQuery, je me suis attardé sur la fonction <code>load()</code>. Perdu ! :</p>
<pre lang="javascript">$(location).attr('href',"http://www.web.site/");</pre>The post <a href="https://www.nicotouch.com/2009/08/jquery-location-href-redirection-javascript-url/">jQuery et location.href ou redirection JavaScript avec une URL</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.nicotouch.com/2009/08/jquery-location-href-redirection-javascript-url/feed/</wfw:commentRss>
			<slash:comments>32</slash:comments>
		
		
			</item>
		<item>
		<title>Application Web sur Smartphone (iPhone, Palm Pre, Android) réalisé pour l&#039;Institut Français de la Vigne et du Vin</title>
		<link>https://www.nicotouch.com/2009/08/application-web-smartphone-iphone-palm-pre-android-institut-francais-vigne-vin/</link>
					<comments>https://www.nicotouch.com/2009/08/application-web-smartphone-iphone-palm-pre-android-institut-francais-vigne-vin/#comments</comments>
		
		<dc:creator><![CDATA[Nico]]></dc:creator>
		<pubDate>Sat, 22 Aug 2009 07:51:11 +0000</pubDate>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[IFV]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Palm Pre]]></category>
		<category><![CDATA[Vigne]]></category>
		<category><![CDATA[Vin]]></category>
		<category><![CDATA[Web Application]]></category>
		<category><![CDATA[WebApp.net]]></category>
		<guid isPermaLink="false">http://www.nicotouch.com/?p=150</guid>

					<description><![CDATA[<p>Voilà, comme promis je poste ici un screencast qui décrit et fait la démontration de l&#8217;application web que j&#8217;ai réalisé pour l&#8217;Institut Français de la Vigne et du Vin avec Christian Debord et Sylvain Guittard. Celle-ci complète un système d&#8217;information dédié à la prévision des risques épidémiques sur la vigne. Qu&#8217;est que l&#8217;IFV ? Qu&#8217;est [&#8230;]</p>
The post <a href="https://www.nicotouch.com/2009/08/application-web-smartphone-iphone-palm-pre-android-institut-francais-vigne-vin/">Application Web sur Smartphone (iPhone, Palm Pre, Android) réalisé pour l'Institut Français de la Vigne et du Vin</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><img title="Web Application iPhone Nicolas Forcato" src="/img/web-application-iphone-ifv-nicolas-forcato.png" alt="Web Application iPhone Nicolas Forcato"><br />
Voilà, comme promis je poste ici un screencast qui décrit et fait la démontration de l&rsquo;<a href="http://www.vitidecid.com/phone/" target="_blank" rel="noopener noreferrer">application web</a> que j&rsquo;ai réalisé pour l&rsquo;<a href="http://www.vignevin.com" target="_blank" rel="noopener noreferrer">Institut Français de la Vigne et du Vin</a> avec Christian Debord et Sylvain Guittard. Celle-ci complète un système d&rsquo;information dédié à la prévision des risques épidémiques sur la vigne.</p>
<ul>
<li>Qu&rsquo;est que l&rsquo;IFV ?</li>
<li>Qu&rsquo;est que le SI Épicure ?</li>
<li>Quelles sont les technologies employées ?</li>
<li>Comment fonctionne l&rsquo;application ?</li>
</ul>
<p>Je vous laisse découvrir tout cela dans les vidéos qui suivent.</p>
<p><iframe loading="lazy" src="https://player.vimeo.com/video/6379252?app_id=122963" width="540" height="338" frameborder="0" title="Application Web iPhone / Smartphone WebApp - D&eacute;mo - Institut Fran&ccedil;ais de la Vigne et du Vin" allow="autoplay; fullscreen" allowfullscreen></iframe></p>
<p><img loading="lazy" class="size-full wp-image-170" title="Vigne Mildiou Oidium Black-Rot maladies Nicolas Forcato" src="/img/vigne-maladies-mini-nicolas-forcato.jpg" alt="Vigne Mildiou Oidium Black-Rot maladies Nicolas Forcato" width="650" height="215"></p>
<p>Visionner les vidéos en HD sur YouTube :</p>
<p><iframe loading="lazy" width="240" height="180" src="https://www.youtube.com/embed/rZ15XT93GOc?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><iframe loading="lazy" width="240" height="180" src="https://www.youtube.com/embed/4ouFxRd_CNs?feature=oembed" frameborder="0" allowfullscreen></iframe> <iframe loading="lazy" frameborder="0" width="240" height="150" src="https://www.dailymotion.com/embed/video/xa8kr9" allowfullscreen allow="autoplay"></iframe></p>The post <a href="https://www.nicotouch.com/2009/08/application-web-smartphone-iphone-palm-pre-android-institut-francais-vigne-vin/">Application Web sur Smartphone (iPhone, Palm Pre, Android) réalisé pour l'Institut Français de la Vigne et du Vin</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.nicotouch.com/2009/08/application-web-smartphone-iphone-palm-pre-android-institut-francais-vigne-vin/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Compiler un projet 3D OpenGL en C sous Mac OS X ou Linux</title>
		<link>https://www.nicotouch.com/2009/03/compiler-un-projet-3d-opengl-en-c-sous-mac-os-x-ou-linux/</link>
					<comments>https://www.nicotouch.com/2009/03/compiler-un-projet-3d-opengl-en-c-sous-mac-os-x-ou-linux/#comments</comments>
		
		<dc:creator><![CDATA[Nico]]></dc:creator>
		<pubDate>Wed, 04 Mar 2009 19:37:26 +0000</pubDate>
				<category><![CDATA[C / C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Compilation]]></category>
		<category><![CDATA[GLUT]]></category>
		<category><![CDATA[librairies]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<guid isPermaLink="false">http://www.nicotouch.com/?p=64</guid>

					<description><![CDATA[<p>« Hello Word » de programmation OpenGL en C sous Linux (Debian). Pour cela ont peut utiliser la librairie GLUT pour réaliser un cube manipulable. Sous Linux : #include Compiler : gcc -o nom_executable source.c -L/usr/X11R6/lib -lglut Sur Mac OS X : avec Xcode, X11 et les Developper Tools : #include // Fichier Header pour OpenGL32 Library [&#8230;]</p>
The post <a href="https://www.nicotouch.com/2009/03/compiler-un-projet-3d-opengl-en-c-sous-mac-os-x-ou-linux/">Compiler un projet 3D OpenGL en C sous Mac OS X ou Linux</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></description>
										<content:encoded><![CDATA[<p>« Hello Word » de programmation OpenGL en C sous Linux (Debian).<br />
Pour cela ont peut utiliser la librairie GLUT pour réaliser un cube manipulable.</p>
<p>Sous Linux  :</p>
<pre class="brush:html" lang="C" line="1">#include <gl glut.h="">
</gl></pre>
<p>Compiler :</p>
<pre lang="bash" line="1">gcc -o nom_executable  source.c -L/usr/X11R6/lib -lglut
</pre>
<p>Sur Mac OS X : avec Xcode, X11 et les Developper Tools :</p>
<pre lang="C" line="1">#include <opengl gl.h="">	   // Fichier Header pour OpenGL32 Library
#include <opengl glu.h="">    // Fichier Header pour GLu32 Library
#include <glut glut.h="">	  // Fichier Header pour GLut Library
</glut></opengl></opengl></pre>
<p>Et utiliser la commande suivante pour la compilation :</p>
<pre lang="bash" line="1">gcc -framework GLUT -framework OpenGL -framework Cocoa source.c -o nom_executable
</pre>
<div id="attachment_68" style="width: 510px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-68" loading="lazy" src="/img/cube-en-3d-opengl-nicotouch.png" alt="Cube en 3D - OpenGL - Mac OS X" title="Cube en 3D - OpenGL - Mac OS X" width="500" height="393" class="size-full wp-image-68"><p id="caption-attachment-68" class="wp-caption-text">Cube en 3D - OpenGL - Mac OS X</p></div>
<p>Voici un petit exemple de programme OpenGL : un cube en 3D :</p>
<pre lang="C" line="1">//----------------------------------------------------------------------
// Cube en 3D avec OpenGL
//----------------------------------------------------------------------

//----------------------------------------------------------------------
// LIBRAIRIES
//----------------------------------------------------------------------
// LIBRAIRIES et COMMANDE Linux :
// #include <gl glut.h="">
// #include <stdlib.h>
// gcc -o prog.exe  main.c -L/usr/X11R6/lib -lglut

#include <opengl gl.h="">		// Header File For The OpenGL32 Library
#include <opengl glu.h="">		// Header File For The GLu32 Library
#include <glut glut.h="">		// Header File For The GLut Library

//----------------------------------------------------------------------
// DECLARATION DES FONCTIONS
//----------------------------------------------------------------------
void keyboard(unsigned char key, int x, int y);
void display();
void mouse(int button, int state, int x, int y);
void mousemotion(int x, int y);
void reshape(int x, int y);

// STRUCTURE
typedef struct {
  float x, y, z, r, g, b;
} point;

//----------------------------------------------------------------------
// VARIABLES GLOBALES
//----------------------------------------------------------------------
float xold, yold, anglex = 0, angley = 0, presse = 0;

// Notre cube :
// Tout les points
point p[8] = {
{-0.5, -0.5, 0.5, 1.0, 0.0, 0.0},
{-0.5, 0.5, 0.5, 0.0, 1.0, 0.0},
{0.5, 0.5, 0.5, 0.0, 0.0, 1.0},
{0.5, -0.5, 0.5, 1.0, 1.0, 1.0},
{-0.5, -0.5, -0.5, 1.0, 0.0, 0.0},
{-0.5, 0.5, -0.5, 0.0, 1.0, 0.0},
{0.5, 0.5, -0.5, 0.0, 0.0, 1.0},
{0.5, -0.5, -0.5, 1.0, 1.0, 1.0}};

// Toutes les faces
int f[6][4] = {
{0, 1, 2, 3},
{3, 2, 6, 7},
{4, 5, 6, 7},
{0, 1, 5, 4},
{1, 5, 6, 2},
{0, 4, 7, 3}};

//----------------------------------------------------------------------
// MAIN
//----------------------------------------------------------------------
int main(int argc, char* argv[]){
  glutInit(&amp;argc, argv);             // Initialise la b. glut
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); // param d'affichage
  glutInitWindowPosition(200, 200);  // Fenetre : position
  glutInitWindowSize(250, 250);      // Fenetre : taille
  glutCreateWindow("OpenGL - Cube 3D - Nicotouch.com");          // Fenetre : Nom

  glClearColor(0, 0, 0, 0);          // Défaut : Couleur de fond
  glPointSize(2.0);                  // Taille d'un point
  glEnable(GL_DEPTH_TEST);           // Utilisation du Tampon de Profondeur

  // Gestion des évènement :
  glutDisplayFunc(affichage);        // Fonction qui gère l'affichage
  glutKeyboardFunc(clavier);         // Fonction qui gère les commandes clavier

  glutMouseFunc(mouse);              // Prendre en compte les fonctions
  glutMotionFunc(mousemotion);       // Fonction de gestion du clic de la Souris
  glutReshapeFunc(reshape);          // Fonction de gestion du redimentionnement de la fenêtre
  glutMainLoop();                    // Boucle d'attente des évènements

}

//----------------------------------------------------------------------
// CLAVIER : gère l'activation de différent mode d'affichage
//----------------------------------------------------------------------
void keyboard(unsigned char key, int x, int y){
  switch(key){ // en fonction des touches, on affiche :
    case 'p':
      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // Texture
      glutPostRedisplay(); // Raffraichissement
      break;
    case 'f':
      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Arrête
      glutPostRedisplay();
      break;
    case 's':
      glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // Point
      glutPostRedisplay();
      break;
    case 'd':
      glEnable(GL_DEPTH_TEST);  // Avec tampon de profondeur
      glutPostRedisplay();
      break;
    case 'D':
      glDisable(GL_DEPTH_TEST); // Sans tampon de profondeur
      glutPostRedisplay();
      break;
    case 'q':                   // Quitter
	  //close(0);
      break;
  }
}

//----------------------------------------------------------------------
// AFFICHAGE : dessine la forme
//----------------------------------------------------------------------
void display(){
  int i, j;
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Reset + double tampon
  for(i = 0; i &lt; 6; i++) {                // Pour chaque face
    glBegin(GL_POLYGON);                  // On dessine un nouveau polygone
    for(j = 0; j &lt; 4; j++) {              // Pour chaque sommet
      glColor3f(p[f[i][j]].r, p[f[i][j]].g, p[f[i][j]].b);
      glVertex3f(p[f[i][j]].x, p[f[i][j]].y, p[f[i][j]].z);
    }
    glEnd();                              // Fin du Polygone
  }

  glFlush();                              // On force l'affichage

  glLoadIdentity();                       // On initialise la matrice de translation
  //gluLookAt(-1.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
  glRotatef(-anglex, 0.0, 1.0, 0.0);      // pour faire des rotation
  glRotatef(-angley, 1.0, 0.0, 0.0);

  glutSwapBuffers();
}

//----------------------------------------------------------------------
// MOUSE : récupère les évènements souris
//----------------------------------------------------------------------
void mouse(int button, int state, int x, int y){
  // Si on appuie sur le bouton gauche
  if(button == GLUT_LEFT_BUTTON &amp;&amp; state == GLUT_DOWN) {
    presse = 1; // Le booléen passe devient vrai
    xold = x;   // On sauvegarde la position
    yold = y;
  }
  // Si on relache le bouton
  if(button == GLUT_LEFT_BUTTON &amp;&amp; state == GLUT_UP) presse = 0;
}

//----------------------------------------------------------------------
// MOUSEOPTION : effectue la rotation
//----------------------------------------------------------------------
void mousemotion(int x, int y) {
  if(presse == 1) {				// Si le bouton est pressé
    anglex = anglex + (x-xold); // On modifie la position actuelle de la souris
    angley = angley + (y-yold); // en fonction de la position actuelle de la
    glutPostRedisplay();        // souris et de la dernière sauvegarde
  }
  xold = x; // On sauvegarde la position actuelle de la souris
  yold = y;
}

//----------------------------------------------------------------------
// RESHAPE : Redimentionnement de la fenêtre
//----------------------------------------------------------------------
void reshape(int x, int y) {
  if(x &lt; y) glViewport(0, (y-x)/2, x, x);
  if(y &lt; x) glViewport((x-y)/2, 0, y, y);
}
</glut></opengl></opengl></stdlib.h></gl></pre>The post <a href="https://www.nicotouch.com/2009/03/compiler-un-projet-3d-opengl-en-c-sous-mac-os-x-ou-linux/">Compiler un projet 3D OpenGL en C sous Mac OS X ou Linux</a> first appeared on <a href="https://www.nicotouch.com">Mon Blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.nicotouch.com/2009/03/compiler-un-projet-3d-opengl-en-c-sous-mac-os-x-ou-linux/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
	</channel>
</rss>
