<?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>FruityFred &#187; OpenGL</title>
	<atom:link href="http://www.fruityfred.com/tag/opengl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fruityfred.com</link>
	<description>Blog d&#039;un développeur (web &#38;&#38; Mac) qui aime bouger et la bonne cuisine</description>
	<lastBuildDate>Wed, 04 Jan 2012 20:58:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>eBALLution</title>
		<link>http://www.fruityfred.com/2009/12/08/eballution/</link>
		<comments>http://www.fruityfred.com/2009/12/08/eballution/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 23:37:32 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[casse-brique]]></category>
		<category><![CDATA[évolution]]></category>
		<category><![CDATA[jeu vidéo]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://www.glimpse-fr.org/?p=892</guid>
		<description><![CDATA[Cela fait déjà quelque temps que je développe un petit jeu vidéo pour Mac OS X, histoire d&#8217;apprendre quelques technologies telles que OpenGL, Cocoa… ça change de Java, HTML et CSS ! Le moteur est maintenant assez avancé pour que j&#8217;ose en parler. Le jeu s&#8217;appelle eBALLution. C&#8217;est un casse-brique qui vous fera voyager dans [...]]]></description>
			<content:encoded><![CDATA[<p>Cela fait déjà quelque temps que je développe un petit jeu vidéo pour <span class="nobr"><a href="http://www.apple.com/fr/macosx/" hreflang="fr" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/fr/macosx/?referer=');">Mac OS X</a></span>, histoire d&#8217;apprendre quelques technologies telles que <a href="http://www.opengl.org/" xml:lang="en" hreflang="en" onclick="pageTracker._trackPageview('/outgoing/www.opengl.org/?referer=');">OpenGL</a>, <a href="http://fr.wikipedia.org/wiki/Cocoa_(Apple)" xml:lang="en" hreflang="fr" onclick="pageTracker._trackPageview('/outgoing/fr.wikipedia.org/wiki/Cocoa_Apple?referer=');">Cocoa</a>… ça change de <a href="http://java.com/fr/" onclick="pageTracker._trackPageview('/outgoing/java.com/fr/?referer=');">Java</a>, <abbr title="HyperText Markup Language" xml:lang="en">HTML</abbr> et <abbr title="Cascading Style Sheets" xml:lang="en">CSS</abbr> ! Le moteur est maintenant assez avancé pour que j&#8217;ose en parler.</p>
<p>Le jeu s&#8217;appelle <strong>eBALLution</strong>. C&#8217;est un casse-brique qui vous fera voyager dans le temps afin de vous faire (re)découvrir l&#8217;histoire de la vie et de l&#8217;Homme : de la création de l&#8217;Univers et de notre chère planète Terre jusqu&#8217;à la vie de tous les jours, en passant par les dinosaures, l&#8217;Antiquité, le Moyen-Âge, les grandes découvertes, … Ce jeu sera gratuit, mais j&#8217;accepterai avec plaisir les dons :-)</p>
<p>Le jeu a déjà son site internet, <a href="http://www.eballution.com" onclick="pageTracker._trackPageview('/outgoing/www.eballution.com?referer=');">eballution.com</a>, sur lequel je publierai des articles lors de mes grandes avancées dans le développement.</p>
<p>Rien n&#8217;est encore définitif, mais voici tout de même quelques images des niveaux de test déjà existants :</p>

<a href='http://www.fruityfred.com/2009/12/08/eballution/eballution1/' title='eBALLution1'><img width="150" height="150" src="http://www.fruityfred.com/wp-content/uploads/2009/12/eBALLution1-150x150.png" class="attachment-thumbnail" alt="eBALLution1" title="eBALLution1" /></a>
<a href='http://www.fruityfred.com/2009/12/08/eballution/eballution2/' title='eBALLution2'><img width="150" height="150" src="http://www.fruityfred.com/wp-content/uploads/2009/12/eBALLution2-150x150.png" class="attachment-thumbnail" alt="eBALLution2" title="eBALLution2" /></a>
<a href='http://www.fruityfred.com/2009/12/08/eballution/eballution3/' title='eBALLution3'><img width="150" height="150" src="http://www.fruityfred.com/wp-content/uploads/2009/12/eBALLution3-150x150.png" class="attachment-thumbnail" alt="eBALLution3" title="eBALLution3" /></a>

</p>
<p>Je prévois de sortir une version beta pour la fin de l&#8217;année… prochaine (2010). Eh oui, ça demande du temps de confectionner et peaufiner les différents niveaux, surtout que j&#8217;en ai prévu un nombre assez important. C&#8217;est qu&#8217;il y a 13,8 milliards d&#8217;années à retracer !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fruityfred.com/2009/12/08/eballution/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Cheetah3D : un modeleur 3D pour Mac OS X</title>
		<link>http://www.fruityfred.com/2009/01/30/cheetah3d-un-modeleur-3d-pour-mac-os-x/</link>
		<comments>http://www.fruityfred.com/2009/01/30/cheetah3d-un-modeleur-3d-pour-mac-os-x/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 00:57:42 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[promotion]]></category>

		<guid isPermaLink="false">http://www.glimpse-fr.org/?p=619</guid>
		<description><![CDATA[Je connaissais Cheetah3D depuis un petit moment déjà, je l&#8217;avais essayé en version d&#8217;évaluation. Ce logiciel de modélisation 3D a été écrit spécialement pour Mac OS X : l&#8217;interface est agréable, claire et simple. La puissance de l&#8217;outil est assez impressionnante, surtout lorsque l&#8217;on sait que le logiciel ne vaut que&#8230; 149 $ ! C&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-620 no-border" title="Logo du logiciel Cheetah3D" src="http://www.fruityfred.com/wp-content/uploads/2009/01/cheetah3d.png" alt="Logo du logiciel Cheetah3D" width="128" height="128" />Je connaissais <a xml:lang="en" hreflang="en" href="http://www.cheetah3d.com" onclick="pageTracker._trackPageview('/outgoing/www.cheetah3d.com?referer=');">Cheetah3D</a> depuis un petit moment déjà, je l&#8217;avais essayé en version d&#8217;évaluation. Ce <strong>logiciel de modélisation 3D</strong> a été écrit spécialement pour <span class="nobr"><a href="http://www.apple.com/fr/macosx/" hreflang="fr" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/fr/macosx/?referer=');">Mac OS X</a></span> : l&#8217;interface est agréable, claire et simple. La <strong>puissance de l&#8217;outil est assez impressionnante</strong>, surtout lorsque l&#8217;on sait que le logiciel ne vaut que&#8230; <strong>149 $</strong> ! C&#8217;est vraiment <strong>peu cher</strong> comparé aux ténors que sont <a hreflang="en" href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;id=5659302" onclick="pageTracker._trackPageview('/outgoing/usa.autodesk.com/adsk/servlet/index?siteID=123112_amp_id=5659302&amp;referer=');">3ds Max</a> (3495 $), <a hreflang="en" href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;id=7635018" onclick="pageTracker._trackPageview('/outgoing/usa.autodesk.com/adsk/servlet/index?siteID=123112_amp_id=7635018&amp;referer=');">Maya</a> (1995 $) ou encore <a hreflang="en" href="http://www.maxon.net/pages/products/cinema4d/cinema4d_e.html" onclick="pageTracker._trackPageview('/outgoing/www.maxon.net/pages/products/cinema4d/cinema4d_e.html?referer=');">Cinema4D</a> (995 $) dans leurs versions les moins chères. Cheetah3D n&#8217;est peut-être pas aussi complet et puissant, mais il permet toutefois de faire de <a hreflang="en" href="http://cheetah3d.com/gallery.php" onclick="pageTracker._trackPageview('/outgoing/cheetah3d.com/gallery.php?referer=');">belles choses</a> (je trouve). Étant donné que je suis en train d&#8217;essayer de créer un petit jeu avec <strong><a href="http://www.opengl.org/" xml:lang="en" hreflang="en" onclick="pageTracker._trackPageview('/outgoing/www.opengl.org/?referer=');">OpenGL</a></strong>, j&#8217;ai acheté Cheetah3D. À l&#8217;occasion de son cinquième anniversaire, Cheetah3D est en promotion en ce moment à 99 $ (soit 83 € TTC). Du coup, j&#8217;ai aussi acheté le <strong>didacticiel de 4 heures en vidéo haute définition</strong>, en anglais (27 € TTC). Et <strong>je ne suis pas déçu</strong> ! Bref, si vous voulez faire de la 3D et que vous êtes sous Mac, n&#8217;hésitez pas à <strong>soutenir l&#8217;unique développeur</strong> de ce logiciel !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fruityfred.com/2009/01/30/cheetah3d-un-modeleur-3d-pour-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dessiner dans une NSView</title>
		<link>http://www.fruityfred.com/2009/01/04/dessiner-dans-une-nsview/</link>
		<comments>http://www.fruityfred.com/2009/01/04/dessiner-dans-une-nsview/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 17:51:44 +0000</pubDate>
		<dc:creator>Fred</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[Interface Builder]]></category>
		<category><![CDATA[NSImage]]></category>
		<category><![CDATA[NSTimer]]></category>
		<category><![CDATA[NSView]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.glimpse-fr.org/?p=559</guid>
		<description><![CDATA[Dans Interface Builder, sélectionnez la vue en question et, dans l&#8217;onglet Identity de l&#8217;Inspecteur, indiquez un nom de classe pour votre vue dans le champ Class (par exemple : GameView). Sélectionnez File > Write Class Files&#8230; dans le menu principal de Interface Builder pour générer cette classe dans le projet. De retour dans Xcode, ouvrez [...]]]></description>
			<content:encoded><![CDATA[<p>Dans <span xml:lang="en"><span xml:lang="en">Interface Builder</span></span>, sélectionnez la vue en question et, dans l&#8217;onglet <em>Identity</em> de l&#8217;Inspecteur, indiquez <strong>un nom de classe</strong> pour votre vue dans le champ <em>Class</em> (par exemple : <code>GameView</code>). Sélectionnez <em>File > Write Class Files&#8230;</em> dans le menu principal de <span xml:lang="en"><span xml:lang="en">Interface Builder</span></span> pour générer cette classe dans le projet.</p>
<p>De retour dans <span xml:lang="en"><span xml:lang="en">Xcode</span></span>, ouvrez le <strong>fichier de déclaration</strong> de cette classe (<code>GameView.h</code>) et faites étendre la classe de <code><a xml:lang="en" hreflang="en" href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/nsview_Class/Reference/NSView.html" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/nsview_Class/Reference/NSView.html?referer=');">NSView</a></code> :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> GameView <span style="color: #002200;">:</span> <span style="color: #400080;">NSView</span> <span style="color: #002200;">&#123;</span>
   <span style="color: #400080;">NSImage</span> <span style="color: #002200;">*</span>background;
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@end</span></pre></div></div>

<p>Ensuite, éditez le <strong>fichier d&#8217;implémentation</strong> de la classe (<code>GameView.m</code>) et implémentez la méthode <code>-drawRect:</code> :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>awakeFromNib <span style="color: #002200;">&#123;</span>
   <span style="color: #11740a; font-style: italic;">// La variable &quot;background&quot; est déclarée dans le fichier header (.h).</span>
   background <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSImage</span> imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;background.png&quot;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>drawRect<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">NSRect</span><span style="color: #002200;">&#41;</span>rect
<span style="color: #002200;">&#123;</span>
   <span style="color: #002200;">&#91;</span>background dissolveToPoint<span style="color: #002200;">:</span>NSMakePoint<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">0</span><span style="color: #002200;">&#41;</span> fraction<span style="color: #002200;">:</span><span style="color: #2400d9;">1.0</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Notez que l&#8217;image est initialisée dans la méthode <code>-awakeFromNib</code>, qui est appelée lors de l&#8217;initialisation de la vue.</p>
<p>Pour <strong>animer le contenu de la vue</strong>, et donc pour forcer le rafraîchissement de la vue, il est possible d&#8217;utiliser un <code><a xml:lang="en" hreflang="en" href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html#//apple_ref/occ/cl/NSTimer" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html_//apple_ref/occ/cl/NSTimer?referer=');">NSTimer</a></code> pour indiquer à la vue qu&#8217;elle doit se re-dessiner :</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>awakeFromNib <span style="color: #002200;">&#123;</span>
   background <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSImage</span> imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;background.png&quot;</span><span style="color: #002200;">&#93;</span>;
   <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSTimer</span>
      scheduledTimerWithTimeInterval<span style="color: #002200;">:</span><span style="color: #2400d9;">0.01</span>
      target<span style="color: #002200;">:</span>self
      selector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>refresh<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span>
      userInfo<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span>
      repeats<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>refresh<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSTimer</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>timer <span style="color: #002200;">&#123;</span>
   <span style="color: #002200;">&#91;</span>self setNeedsDisplay<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>La méthode <code>-refresh:</code> sera appelée toutes les 0,01 seconde (100 fois par secondes, donc) et demandera à la vue de se re-dessiner, via l&#8217;appel à <code>setNeedsDisplay:YES</code>. Évidemment, ceci n&#8217;a de sens que si l&#8217;image (ou sa position) change.</p>
<p>Côté <strong>performances</strong>, j&#8217;ai fait quelques tests : j&#8217;affiche 1000 fois la même image (26&#215;26 pixels) toutes les 0.01 seconde en la décalant de 1 pixel et ça ne gêne pas du tout mon <a href="http://www.apple.com/fr/imac/" xml:lang="en" hreflang="fr" onclick="pageTracker._trackPageview('/outgoing/www.apple.com/fr/imac/?referer=');">iMac</a>, <strong>l&#8217;animation est impeccable</strong> !</p>
<p>Je précise que ce n&#8217;est pas ici une technique très avancée pour animer du contenu, car<strong> cela ne tient pas compte de la puissance de la machine</strong>. En vérité, dans la méthode <code>-refresh:</code><strong>, il faudrait vérifier si l&#8217;image doit être déplacée (ou modifiée) en fonction du temps qui s&#8217;est écoulé depuis la dernière modification de cette image</strong>. Ainsi, peu importe la résolution du timer utilisée, ou la capacité de la machine à afficher du contenu graphique, l&#8217;image sera toujours correcte (en fonction du temps écoulé), même si l&#8217;animation n&#8217;est pas fluide. Il est aussi possible d&#8217;utiliser <code><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSAnimation_Class/Reference/Reference.html" onclick="pageTracker._trackPageview('/outgoing/developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSAnimation_Class/Reference/Reference.html?referer=');">NSAnimation</a></code> pour des animations complexes &laquo;&nbsp;finies&nbsp;&raquo;.</p>
<p>Pour terminer, si votre but est de faire de l&#8217;animation complexe (2D ou 3D), comme pour la programmation d&#8217;un jeu, je ne peux que vous conseiller de vous tourner vers <a href="http://www.opengl.org/" onclick="pageTracker._trackPageview('/outgoing/www.opengl.org/?referer=');">OpenGL</a>. Je suis en train de m&#8217;y mettre, je publierai donc prochainement des articles à ce propos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fruityfred.com/2009/01/04/dessiner-dans-une-nsview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

