<?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>Segmentation Fault! &#187; OpenGL</title>
	<atom:link href="http://www.segmentationfault.es/category/programacion/opengl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.segmentationfault.es</link>
	<description>La formulación de un problema es más importante que su solución.</description>
	<lastBuildDate>Tue, 29 Jun 2010 19:45:33 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>OpenGL y GLUT en Visual C++</title>
		<link>http://www.segmentationfault.es/2009/08/opengl-glut-visual-cpp/</link>
		<comments>http://www.segmentationfault.es/2009/08/opengl-glut-visual-cpp/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 21:04:08 +0000</pubDate>
		<dc:creator>Gabi García</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[GLUT]]></category>
		<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.es/?p=1112</guid>
		<description><![CDATA[Dado mi anterior post sobre OpenGL y GLUT en XCode, he decidido complementarlo con este nuevo post que explica cómo configurar OpenGL y la librería GLUT en el entorno de desarrollo por excelencia en el mundo de Microsoft Windows, Visual Studio. Porque los programadores del mundo de las ventanas también tienen cabida en este blog.]]></description>
			<content:encoded><![CDATA[<p>Dado<a href="http://www.segmentationfault.es/2009/07/opengl-glut-xcode/" target="_blank"> mi anterior post sobre OpenGL y GLUT en XCode</a>, he decidido complementarlo con este nuevo post que explica cómo configurar OpenGL y la librería GLUT en el entorno de desarrollo por excelencia en el mundo de MS Windows, Visual Studio. En este caso concreto utilizaremos Visual C++ en su versión gratuita, Visual C++ Express Edition 2008, que se puede descargar desde <a href="http://www.microsoft.com/express/vc/Default.aspx" target="_blank">la página web de Microsoft</a>.</p>
<p>Una vez instalado, nos disponemos a descargar la librería GLUT para Win32 desde la página de Nate Robins o directamente desde <a href="http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip" target="_blank">este enlace</a>. Al descomprimir el zip descargado nos encontramos con 4 ficheros y un readme.</p>
<p><div id="attachment_1117" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-2.png"><img class="size-medium wp-image-1117" title="GLUT Files" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-2-300x230.png" alt="Ficheros de la librería GLUT para Win32" width="300" height="230" /></a><p class="wp-caption-text">Ficheros de la librería GLUT para Win32</p></div></p>
<p>A continuación abrimos Visual C++ para empezar a configurarlo para incluir la librería. Primero vamos a<em> Herramientas/Opciones&#8230;</em>.</p>
<p><div id="attachment_1118" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-1.png"><img class="size-medium wp-image-1118" title="Visual C++ Herramientas/Opciones..." src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-1-300x230.png" alt="Vamos a Herramientas/Opciones... para empezar a configurar." width="300" height="230" /></a><p class="wp-caption-text">Vamos a Herramientas/Opciones... para empezar a configurar.</p></div></p>
<p>En la ventana que se nos abre, seleccionamos en el árbol de la izquierda <em>Proyectos y soluciones/Directorios de VC++</em>.</p>
<p><div id="attachment_1119" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-3.png"><img class="size-medium wp-image-1119" title="Visual C++ " src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-3-300x230.png" alt="Seleccionamos Proyectos y soluciones/Directorios de VC++." width="300" height="230" /></a><p class="wp-caption-text">Seleccionamos Proyectos y soluciones/Directorios de VC++.</p></div></p>
<p>En el desplegable de la esquina superior derecha seleccionamos &#8220;<em>Archivos de inclusión</em>&#8220;.</p>
<p><div id="attachment_1120" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-4.png"><img class="size-medium wp-image-1120" title="Visual C++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-4-300x230.png" alt="En el desplegable seleccionamos &quot;Archivos de inclusión&quot;." width="300" height="230" /></a><p class="wp-caption-text">En el desplegable seleccionamos &quot;Archivos de inclusión&quot;.</p></div></p>
<p>Hacemos clic sobre el icono de la carpeta para añadir un nuevo archivo de inclusión que podemos elegir haciendo clic en el botón con los tres puntos suspensivos. Ahí seleccionamos la carpeta de los archivos de glut (<em>glut-3.7.6-bin</em>).</p>
<p><div id="attachment_1122" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-6.png"><img class="size-medium wp-image-1122 " title="Visual c++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-6-300x230.png" alt="Hacemos clic en la carpeta y en el botón de los tres puntos [ . . . ]" width="300" height="230" /></a><p class="wp-caption-text">Elegimos la carpeta glut-3.7.6-bin.</p></div></p>
<p style="text-align: left;">En esta misma ventana seleccionamos ahora &#8220;<em>Archivos de biblioteca</em>&#8221; mediante el mismo procedimiento incluyendo también la carpeta de la librería.</p>
<p><div id="attachment_1123" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-7.png"><img class="size-medium wp-image-1123 " title="Visual C++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-7-300x230.png" alt="Elegimos la carpeta glut-3.7.6-bin." width="300" height="230" /></a><p class="wp-caption-text">Realizamos el mismo procedimiento para archivos de biblioteca.</p></div></p>
<p><div id="attachment_1124" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-9.png"><img class="size-medium wp-image-1124" title="Visual c++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-9-300x230.png" alt="Realizamos el mismo procedimiento para archivos de biblioteca." width="300" height="230" /></a><p class="wp-caption-text">Elegimos la carpeta glut-3.7.6-bin.</p></div></p>
<p style="text-align: left;">Ahora debemos copiar la DLL que se incluye en el paquete de la librería en algún lugar en el que Windows la localice, por ejemplo, en <em>C:\WINDOWS\system32</em>.</p>
<p><div id="attachment_1125" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-12.png"><img class="size-medium wp-image-1125" title="Visual cpp" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-12-300x230.png" alt="Copiamos la glut32.dll en C:\WINDOWS\system32." width="300" height="230" /></a><p class="wp-caption-text">Copiamos la glut32.dll en C:WINDOWSsystem32.</p></div></p>
<p style="text-align: left;">Ahora ya podemos crear un nuevo proyecto vacío mediante el menú <em>Archivo/Nuevo/Proyecto</em>.</p>
<p><div id="attachment_1126" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-13.png"><img class="size-medium wp-image-1126" title="Visual C++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-13-300x230.png" alt="Creamos un proyecto mediante el menú Archivo/Nuevo/Proyecto." width="300" height="230" /></a><p class="wp-caption-text">Creamos un proyecto mediante el menú Archivo/Nuevo/Proyecto.</p></div></p>
<p style="text-align: left;">Elegimos en <em>General</em>, la opción de <em>Proyecto vacío</em> y establecemos un nombre para el proyecto, en este caso &#8220;Segmentation Fault&#8221;.</p>
<p style="text-align: left;">
<p><div id="attachment_1127" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-15.png"><img class="size-medium wp-image-1127" title="Visual C++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-15-300x230.png" alt="Elegimos Proyecto vacío y le damos un nombre." width="300" height="230" /></a><p class="wp-caption-text">Elegimos Proyecto vacío y le damos un nombre.</p></div></p>
<p style="text-align: left;">A continuación, añadimos un fichero en el que incluir el código fuente haciendo clic derecho sobre <em>Archivos de código fuente/Agregar/Nuevo Elemento&#8230;</em>.</p>
<p style="text-align: left;">
<p><div id="attachment_1128" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-16.png"><img class="size-medium wp-image-1128" title="Visual c++" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-16-300x230.png" alt="Añadimos un nuevo fichero." width="300" height="230" /></a><p class="wp-caption-text">Añadimos un nuevo fichero.</p></div></p>
<p>Le damos un nombre al fichero, por ejemplo, <em>main.cpp</em>.</p>
<p style="text-align: left;">
<p><div id="attachment_1133" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-17.png"><img class="size-medium wp-image-1133" title="Imagen 17" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-17-300x230.png" alt="Le damos un nombre al fichero." width="300" height="230" /></a><p class="wp-caption-text">Le damos un nombre al fichero.</p></div></p>
<p style="text-align: left;">En el nuevo fichero podemos incluir una ligera variante del código que propuse en el anterior post que os detallo a continuación:</p>
<p style="text-align: left;">
<p style="text-align: left;">
<pre class="brush: cpp;">
#ifdef WIN32
#include &lt;windows.h&gt;
#endif

//include GLUT
#include &lt;glut.h&gt;

//set the macros for the window size
#define SIZEX 500
#define SIZEY 500

//initializing stuff
void init(void)
{
   glDisable( GL_DEPTH_TEST ); //triangles have two sides
   glDisable( GL_CULL_FACE ); //triangles have two sides
}

//Render one frame
void render(void)
{
   //Clear the window and the depth buffer
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   //Render the triangle
   glBegin(GL_TRIANGLES);
   glColor3f(1.0f, 0.0f, 0.0f ); //change vertex color
   glVertex2d( -0.5f, -0.5f );

   glColor3f(0.0f, 1.0f, 0.0f ); //change vertex color
   glVertex2d( 0.5f, -0.5f );

   glColor3f(0.0f, 0.0f, 1.0f ); //change vertex color
   glVertex2d( 0.0f, 0.5f );
   glEnd();

   //Swap front and back buffer
   glutSwapBuffers();
}

int main(int argc, char **argv)
{
   //init all OpenGL stuff
   glutInit(&amp;argc, argv); //init GLUT
   glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); //init framebuffer properties
   glutInitWindowSize(SIZEX, SIZEY); //init window dimensions
   glutCreateWindow(&quot;Segmentation Fault&quot;);  //create window

   //now that we have the window we can set the opengl state
   init();

   //set the callbacks
   glutDisplayFunc(render);  //render a frame
   glutIdleFunc(render);       //what to do when nothing happens

   //start the GLUT mainloop (this function will be executed in a loop)
   glutMainLoop();

   return 0;
}
</pre>
<p>El resultado debería ser, al igual que en la anterior entrega, un triángulo colorido.</p>
<p><div id="attachment_1135" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/08/Imagen-18.png"><img class="size-medium wp-image-1135" title="Imagen 18" src="http://www.segmentationfault.es/wp-content/2009/08/Imagen-18-300x230.png" alt="Resultado final." width="300" height="230" /></a><p class="wp-caption-text">Resultado final.</p></div></p>
<p>Os recuerdo, como siempre, que tenemos los comentarios para las dudas y problemas que os surjan. Salu2!</p>
<p><span style="text-decoration: underline;"><strong>Fuentes</strong></span></p>
<p><a href="http://www.tecn.upf.edu/~jagenjo/" target="_blank">Javi Agenjo &#8211; http://www.tecn.upf.edu/~jagenjo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.segmentationfault.es/2009/08/opengl-glut-visual-cpp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenGL y GLUT en Xcode</title>
		<link>http://www.segmentationfault.es/2009/07/opengl-glut-xcode/</link>
		<comments>http://www.segmentationfault.es/2009/07/opengl-glut-xcode/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 08:23:13 +0000</pubDate>
		<dc:creator>Gabi García</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[GLUT]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.es/?p=1003</guid>
		<description><![CDATA[Los programadores que deseen crear programas usando las librerías de OpenGL y GLUT que poseen un Mac no tienen por qué utilizar/emular otros Sistemas Operativos. Pueden hacer uso del entorno de desarrollo propio de Apple, el Xcode, configurándolo siguiendo los pasos de este pequeño tutorial. ]]></description>
			<content:encoded><![CDATA[<p>En primer lugar, quiero decir que este post es bastante específico y, posiblemente, sólo será útil para aquellos programadores que deseen realizar alguna aplicación con la librería gráfica <a href="http://es.wikipedia.org/wiki/OpenGL" target="_blank">OpenGL</a> desde el <a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado" target="_blank">IDE</a> <a href="http://es.wikipedia.org/wiki/Xcode" target="_blank">Xcode</a> de MacOS. En este breve tutorial pretendo indicaros los pasos necesarios para crear un proyecto en C++ haciendo uso de las librerías de OpenGL y <a href="http://es.wikipedia.org/wiki/GLUT" target="_blank">GLUT</a> que incorpora el sistema operativo de Apple.</p>
<p>En primer lugar debemos arrancar el entorno de desarrollo Xcode, por ejemplo desde la carpeta de Aplicaciones, y nos disponemos a crear un nuevo proyecto vacío haciendo clic en <em>File/New Project</em> y posteriormente, en la ventana emergente, <em>Empty Project</em>.</p>
<p><div id="attachment_1010" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/imagen1-2.png"><img class="size-medium wp-image-1010" title="imagen1-2" src="http://www.segmentationfault.es/wp-content/2009/07/imagen1-2-300x93.png" alt="Creamos un nuevo proyecto en Xcode." width="300" height="93" /></a><p class="wp-caption-text">Creamos un nuevo proyecto en Xcode.</p></div></p>
<p><div id="attachment_1009" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-3.png"><img class="size-medium wp-image-1009" title="Imagen 3" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-3-300x256.png" alt="Creamos un nuevo proyecto vacío." width="300" height="256" /></a><p class="wp-caption-text">Seleccionamos proyecto vacío.</p></div></p>
<p>Luego debemos indicar un nombre para el proyecto. Para el ejemplo utilizaremos el nombre de &#8220;SegmentationFault&#8221;.</p>
<p><div id="attachment_1008" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-4.png"><img class="size-medium wp-image-1008" title="Imagen 4" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-4-300x256.png" alt="Damos nombre al proyecto." width="300" height="256" /></a><p class="wp-caption-text">Damos nombre al proyecto.</p></div></p>
<p>Y ya tenemos el proyecto vacío creado. Ahora debemos empezar a configurarlo para que funcione con OpenGL y GLUT. Primero crearemos un nuevo Target, mediante <em>Project/New Target</em> o con el botón derecho encima de <em>Targets</em> y <em>Add/New Target</em>.</p>
<p><div id="attachment_1011" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-6.png"><img class="size-medium wp-image-1011" title="Imagen 6" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-6-300x195.png" alt="Añadimos un nuevo Target al proyecto." width="300" height="195" /></a><p class="wp-caption-text">Añadimos un nuevo Target al proyecto.</p></div></p>
<p>Seleccionamos el tipo del Target como Cocoa Application y especificamos un nombre, por ejemplo, GLUT.</p>
<p><div id="attachment_1012" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-7.png"><img class="size-medium wp-image-1012" title="Imagen 7" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-7-300x256.png" alt="Seleccionamos Cocoa App como tipo de Target." width="300" height="256" /></a> <p class="wp-caption-text">Seleccionamos Cocoa App como tipo de Target. </p></div></p>
<p><div id="attachment_1013" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-8.png"><img class="size-medium wp-image-1013" title="Imagen 8" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-8-300x256.png" alt="Especificamos un nombre para el Target." width="300" height="256" /></a><p class="wp-caption-text">Especificamos un nombre para el Target.</p></div></p>
<p>A continuación se nos muestran las configuraciones por defecto del Target, de las cuales sólo deberemos modificar la entrada de GCC_PREFIX_HEADER para poner el campo en blanco. Recomiendo que utilicéis el buscador para encontrar la opción entre todas las existentes.</p>
<p><div id="attachment_1016" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-9.png"><img class="size-medium wp-image-1016" title="Imagen 9" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-9-300x269.png" alt="Configuración por defecto del nuevo Target." width="300" height="269" /></a><p class="wp-caption-text">Configuración por defecto del nuevo Target.</p></div></p>
<p><div id="attachment_1018" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-101.png"><img class="size-medium wp-image-1018" title="Imagen 10" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-101-300x269.png" alt="Búsqueda de la entrada GCC_PREFIX_HEADER." width="300" height="269" /></a><p class="wp-caption-text">Búsqueda de la entrada GCC_PREFIX_HEADER.</p></div></p>
<p><div id="attachment_1019" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-12.png"><img class="size-medium wp-image-1019" title="Imagen 12" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-12-300x269.png" alt="Eliminamos la información del campo Value." width="300" height="269" /></a><p class="wp-caption-text">Eliminamos la información del campo Value.</p></div></p>
<p>Ahora debemos añadir a nuestro Target, los Frameworks de OpenGL y GLUT incluidos en la libraría del Sistema Operativo. Para ello clic derecho sobre el Target creado y seleccionamos <em>Add/Existing Frameworks&#8230;</em></p>
<p><div id="attachment_1020" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-13.png"><img class="size-medium wp-image-1020" title="Imagen 13" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-13-300x196.png" alt="Añadimos los Frameworks de OpenGL y GLUT." width="300" height="196" /></a><p class="wp-caption-text">Añadimos los Frameworks de OpenGL y GLUT.</p></div></p>
<p>Nos aparecerá una ventana en la que deberemos seleccionar los Frameworks <strong>GLUT.framework</strong> y <strong>OpenGL.framework</strong> alojados en la carpeta <em>/Sistema/Librería/Frameworks </em>de nuestro disco duro. Podemos seleccionar ambos manteniendo pulsada la tecla <strong>cmd</strong> mientras clicamos.</p>
<p><div id="attachment_1022" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-15.png"><img class="size-medium wp-image-1022" title="Imagen 15" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-15-300x222.png" alt="Seleccionamos los frameworks GLUT y OpenGL de /System/Lybrary/Framewoks." width="300" height="222" /></a><p class="wp-caption-text">Seleccionamos los frameworks GLUT y OpenGL de /System/Library/Framewoks.</p></div></p>
<p>En la ventana emergente que aparece después de seleccionarlos no modificamos nada y simplemente clicamos sobre <em>Add</em>.</p>
<p><div id="attachment_1023" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-16.png"><img class="size-medium wp-image-1023" title="Imagen 16" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-16-300x281.png" alt="Continuamos el proceso con las opciones por defecto pulsando Add." width="300" height="281" /></a><p class="wp-caption-text">Continuamos el proceso con las opciones por defecto pulsando Add.</p></div></p>
<p>Ahora ya tenemos configurado nuestro proyecto para que trabaje con las librerías OpenGL y GLUT. A continuación creamos un nuevo fichero de código fuente al proyecto para comprovar que todo funciona correctamente.</p>
<p><div id="attachment_1024" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-17.png"><img class="size-medium wp-image-1024" title="Imagen 17" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-17-300x195.png" alt="Añadimos nuevo fichero de código fuente." width="300" height="195" /></a><p class="wp-caption-text">Añadimos nuevo fichero de código fuente.</p></div></p>
<p>Seleccionamos nuevo fichero vacío en el proyecto y especificamos un nombre, por ejemplo, main.cpp.</p>
<p><div id="attachment_1026" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-18.png"><img class="size-medium wp-image-1026" title="Imagen 18" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-18-300x256.png" alt="Seleccionamos nuevo fichero vacío." width="300" height="256" /></a><p class="wp-caption-text">Seleccionamos nuevo fichero vacío.</p></div></p>
<p><div id="attachment_1027" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-19.png"><img class="size-medium wp-image-1027" title="Imagen 19" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-19-300x256.png" alt="Especificamos un nombre, p.e. main.cpp." width="300" height="256" /></a><p class="wp-caption-text">Especificamos un nombre, p.e. main.cpp.</p></div></p>
<p>En el nuevo fichero podemos poner el código que os muestro a continuación que, si todo el proceso ha ido correctamente, debe renderizar un triángulo en pantalla.</p>
<pre class="brush: cpp;">
//include GLUT
#include &lt;GLUT/glut.h&gt;;

//set the macros for the window size
#define SIZEX 500
#define SIZEY 500

//initializing stuff
void init(void)
{
   glDisable( GL_DEPTH_TEST ); //triangles have two sides
   glDisable( GL_CULL_FACE ); //triangles have two sides
}

//Render one frame
void render(void)
{
   //Clear the window and the depth buffer
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   //Render the triangle
   glBegin(GL_TRIANGLES);
   glColor3f(1.0f, 0.0f, 0.0f ); //change vertex color
   glVertex2d( -0.5f, -0.5f );

   glColor3f(0.0f, 1.0f, 0.0f ); //change vertex color
   glVertex2d( 0.5f, -0.5f );

   glColor3f(0.0f, 0.0f, 1.0f ); //change vertex color
   glVertex2d( 0.0f, 0.5f );
   glEnd();

   //Swap front and back buffer
   glutSwapBuffers();
}

int main(int argc, char **argv)
{
   //init all OpenGL stuff
   glutInit(&amp;amp;argc, argv); //init GLUT
   glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); //init framebuffer properties
   glutInitWindowSize(SIZEX, SIZEY); //init window dimensions
   glutCreateWindow(&quot;Segmentation Fault&quot;);	//create window

   //now that we have the window we can set the opengl state
   init();

   //set the callbacks
   glutDisplayFunc(render);  //render a frame
   glutIdleFunc(render);	     //what to do when nothing happens

   //start the GLUT mainloop (this function will be executed in a loop)
   glutMainLoop();

   return 0;
}
</pre>
<p>Y el resultado debe ser este:</p>
<p><div id="attachment_1032" class="wp-caption aligncenter" style="width: 299px"><a href="http://www.segmentationfault.es/wp-content/2009/07/Imagen-22.png"><img class="size-medium wp-image-1032" title="Imagen 22" src="http://www.segmentationfault.es/wp-content/2009/07/Imagen-22-289x300.png" alt="Triángulo resultante del código del ejemplo." width="289" height="300" /></a><p class="wp-caption-text">Triángulo resultante del código del ejemplo.</p></div></p>
<p>Como siempre os digo, ante cualquier duda sabed que no cobramos por comentar. Salu2! <img src='http://www.segmentationfault.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong><span style="text-decoration: underline;">Fuentes</span></strong></p>
<p><a href="http://blog.onesadcookie.com/2007/12/xcodeglut-tutorial.html" target="_blank">OneSadCookie &#8211; http://blog.onesadcookie.com/2007/12/xcodeglut-tutorial.html</a></p>
<p><a href="http://www.tecn.upf.edu/~jagenjo/" target="_blank">Javi Agenjo &#8211; http://www.tecn.upf.edu/~jagenjo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.segmentationfault.es/2009/07/opengl-glut-xcode/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->