<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4950768892839705021</id><updated>2012-02-16T05:38:43.688-08:00</updated><category term='error C2440'/><category term='opengl glut c++ windows'/><category term='videojuegos 2d 3d opengl'/><category term='opengl glut c++ mac xcode'/><category term='opengl basico pipeline'/><category term='VC++'/><category term='DirectX'/><category term='error C2664'/><category term='opengl pipeline'/><title type='text'> Gamer development</title><subtitle type='html'>  Blog sobre mis experiencias en el desarrollo de videojuegos.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-8249020351002551409</id><published>2011-09-17T10:20:00.000-07:00</published><updated>2011-09-17T10:29:08.958-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='error C2440'/><category scheme='http://www.blogger.com/atom/ns#' term='error C2664'/><category scheme='http://www.blogger.com/atom/ns#' term='DirectX'/><category scheme='http://www.blogger.com/atom/ns#' term='VC++'/><title type='text'>Resolución de errores, tip #1</title><content type='html'>&lt;b style="color: #b45f06;"&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Usando VC&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: small;"&gt;++&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: small;"&gt;2008&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt; y DirectX.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="color: #b45f06;"&gt;Error: &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;i style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="color: #990000; font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;error C2440: '=' : no se puede realizar la conversión de 'const char *' a 'LPCWSTR'&lt;/span&gt;&lt;/li&gt;&lt;li style="color: #990000;"&gt;error C2664: no se puede convertir el parámetro 2 de 'const char [X]' a 'LPCWSTR'&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Estos errores de conversión se producen debido a que DirectX por defecto usa el juego de caracteres UNICODE mientras que el resto de tu proyecto no.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;b&gt;Solución:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Ve a:&lt;br /&gt;&lt;br /&gt;Propiedades de proyecto-&amp;gt;Propiedades de configuracion-&amp;gt;General-&amp;gt;Juego de caracteres&lt;br /&gt;&lt;br /&gt;y cambia &lt;b&gt;"Utilizar juego de caracteres Unicode"&lt;/b&gt; por&lt;b&gt; "Utilizar juego de caracteres multibyte"&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-8249020351002551409?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/8249020351002551409/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=8249020351002551409&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/8249020351002551409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/8249020351002551409'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/09/tip-1.html' title='Resolución de errores, tip #1'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-1563053740063965946</id><published>2011-03-05T07:53:00.000-08:00</published><updated>2011-03-05T11:04:18.975-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opengl glut c++ windows'/><title type='text'>Configurar OpenGL y GLUT en Windows (Visual Studio)</title><content type='html'>Configurar OpenGL y GLUT en Visual Studio de Windows es también muy sencillo.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Aunque OpenGL viene con todas las versiones de Windows, GLUT hace falta descargarlo. Esto se puede hacer &lt;a href="http://www.xmission.com/%7Enate/glut.html"&gt;desde la web de Nate Robins&lt;/a&gt; (&lt;span style="font-family: 'arial narrow', helvetica; font-size: small;"&gt;glut-3.7.6-bin.zip&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;Después de descomprimirlo borramos los ficheros glut.def y README-win32.txt.&lt;/li&gt;&lt;li&gt;Copiamos la dll glut32.dll en %WinDir%\System32 (C:\Windows\System32 por ejemplo).&lt;/li&gt;&lt;li&gt;También copiamos la librería glut32.lib en el subdirectorio lib de VC (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib en Windows 7/Vista o&amp;nbsp; C:\Program Files\Microsoft Visual Studio 9.0\VC\lib en Windows XP por ejemplo).&lt;/li&gt;&lt;li&gt;Después crear el subdirectorio gl en el directorio include de VC y copiar allí el fichero de cabecera glut32.h (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\gl o C:\Program Files\Microsoft Visual Studio 9.0\VC\include\gl).&lt;/li&gt;&lt;/ol&gt;El siguiente video muestra los pasos anteriormente explicados:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/zSQoi-Yeu0M/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zSQoi-Yeu0M&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/zSQoi-Yeu0M&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Desde el código referenciaremos las librerías mediante:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;#include &amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;#include &amp;lt;gl/glut.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: white; color: #990000; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div style="background-color: white; color: #990000; font-family: 'Courier New', Courier, monospace; font-size: medium;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Cuando compilemos un programa que use la librería GLUT y stdlib.h (de VC nuevo como Visual Studio 2008) aparecerá el siguiente error:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;error C2381: 'exit' : nueva definición; __declspec(noreturn) es diferente&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto es debido a que algunas definiciones de stdlib.h han sido actualizadas. Para solucionarlo basta con modificar la línea 146 de glut.h:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;extern _CRTIMP void __cdecl exit(int);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;por:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;extern _CRTIMP __declspec(noreturn) void __cdecl exit(int);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Así no aparecerán errores aunque sí algunas advertencias.&lt;br /&gt;&lt;br /&gt;Con esto ya estaría configurado el entorno para desarrollar en Windows!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-1563053740063965946?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/1563053740063965946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=1563053740063965946&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1563053740063965946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1563053740063965946'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/03/configurar-opengl-y-glut-en-visual.html' title='Configurar OpenGL y GLUT en Windows (Visual Studio)'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-522225869403903025</id><published>2011-03-04T15:13:00.000-08:00</published><updated>2011-03-05T14:51:31.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opengl glut c++ mac xcode'/><title type='text'>Configurar OpenGL y GLUT en Mac (XCode)</title><content type='html'>Configurar OpenGL y GLUT en Mac es muy sencillo :-) solo debemos seguir los siguientes pasos:&lt;br /&gt;&lt;br /&gt;Vamos a utilizar las librerías de OpenGL de C++ (que viene intergradas con el OS) así que no usaremos Cocoa ni Objetive-C. El IDE que utilizaremos será XCode. Así que manos a la obra...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Iniciamos XCode y creamos un nuevo proyecto como Mac Os X &amp;gt;&amp;gt; Aplicacion con el template de "Command line tool" y de tipo C++ stdc++.&lt;/li&gt;&lt;li&gt;Desde el menú Project &amp;gt;&amp;gt; Add to project... buscamos las librerías de OpenGL y GLUT que se encuentran en /Sistema/Libreria/Frameworks/ y son OpenGL.framework y GLUT.framework respectivamente.&lt;/li&gt;&lt;/ol&gt;Con estos sencillos pasos ya tendríamos el entorno preparado para empezar a desarrollar, así de fácil!&lt;br /&gt;&lt;br /&gt;Os dejo este video explicando los pasos anteriores.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/kSvWNHY8FCU/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kSvWNHY8FCU?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/kSvWNHY8FCU?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Para más información visitar la &lt;a href="http://developer.apple.com/library/mac/#qa/qa2008/qa1613.html"&gt;página de desarrollador de Apple&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-522225869403903025?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/522225869403903025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=522225869403903025&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/522225869403903025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/522225869403903025'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/03/configurar-opengl-y-glut-en-mac.html' title='Configurar OpenGL y GLUT en Mac (XCode)'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-1680288750915258840</id><published>2011-03-02T14:51:00.000-08:00</published><updated>2011-03-02T14:51:43.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opengl pipeline'/><title type='text'>OpenGL basics: el comienzo de todo (II)</title><content type='html'>&lt;div style="margin-bottom: 0cm;"&gt;El modelo de ejecución de OpenGL es Cliente-Servidor.&amp;nbsp;Una aplicación (el cliente) manda comandos que son interpretados y procesados por OpenGL (el servidor local o remoto). Este servidor puede tener varios contextos (Gl &lt;i&gt;contexts&lt;/i&gt;).&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;A continuación vamos a ver como trabaja el servidor de OpenGL y como  este proceso es realizado por una pipeline gráfica o máquina de estados.&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-FNnFrJOJdns/TW7JM1Wxf7I/AAAAAAAAADo/qQ1c1jN123A/s1600/pipeline.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="https://lh3.googleusercontent.com/-FNnFrJOJdns/TW7JM1Wxf7I/AAAAAAAAADo/qQ1c1jN123A/s400/pipeline.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Pipeline en OpenGL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="margin-bottom: 0cm;"&gt;En este diagrama se puede ver el pipeline. Los comandos entrarían por la izquierda.  &lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;En primer lugar en vez de lanzar  todos los comandos por el pipeline se pueden acumular en el &lt;i&gt;display  list&lt;/i&gt; para procesarlos más tarde y de manera transaccional.   &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;La fase del &lt;i&gt;evaluator&lt;/i&gt;  permite la evaluación de curvas y superficies. Esto permite crear  superficies solo usando puntos de control.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;Durante  la fase &lt;/span&gt;&lt;i&gt;&lt;span style="text-decoration: none;"&gt;per-vetex  operations and primitive assembly&lt;/span&gt;&lt;/i&gt;&lt;span style="text-decoration: none;"&gt;,  OpenGL procesa todas las primitivas que son transformadas y  alumbradas. Además las primitivas son “clipeadas” por el  &lt;/span&gt;&lt;i&gt;&lt;span style="text-decoration: none;"&gt;viewport &lt;/span&gt;&lt;/i&gt;&lt;span style="text-decoration: none;"&gt;(esto  no es mas que la geometría que quede oculta será filtrada y no se  enviará a renderizar).   &lt;/span&gt;  &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;La  rasterización es el proceso que permite mostrar gráficos con  formas 3D en la pantalla.  &lt;/span&gt;  &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;Después  de todo esto en la última fase &lt;/span&gt;&lt;i&gt;&lt;span style="text-decoration: none;"&gt;per-fragment  operations&lt;/span&gt;&lt;/i&gt;&lt;span style="text-decoration: none;"&gt; que se  realizan las últimas operaciones en los datos antes de ser enviados  al “frame buffer”. Estas operaciones incluyen actualizaciones  condicionales del “frame buffer” basadas en valores para  realizar &lt;/span&gt;&lt;i&gt;&lt;span style="text-decoration: none;"&gt;z-buffering&lt;/span&gt;&lt;/i&gt;&lt;span style="text-decoration: none;"&gt;,  &lt;/span&gt;&lt;i&gt;&lt;span style="text-decoration: none;"&gt;blending&lt;/span&gt;&lt;/i&gt;&lt;span style="text-decoration: none;"&gt;  o enmascaramiento entre otras operaciones lógicas sobre pixels.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="margin-bottom: 0cm; text-decoration: none;"&gt;En este punto conviene remarcar que los comandos aplicados sobre el “frame buffer” son controlados por el sistema de ventanas que es el que asigna los recursos del “frame buffer”. No hay comandos de OpenGL para configurar el “frame buffer”. Esta configuración se realiza fuera de OpenGL, de hecho la propia inicialización de OpenGL se realiza cuando el sistema de ventanas asigna una ventana para que OpenGL pueda renderizar. Existe una extensión de OpenGL llamada GLX, que proporciona una  interfaz para comunicarse con las X. Yo personalmente utilizo GLUT que permite crear callbacks para manejar ventanas y los eventos de input del usuario (esto lo veremos más adelante).&lt;/div&gt;&lt;div style="margin-bottom: 0cm; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm; text-decoration: none;"&gt; * Por último, comentar que los datos de entrada pueden venir en forma de  pixeles en vez de vértices, como por ejemplo una imagen para mapear una  textura, se saltan la primera fase del procesado. El resultado en este caso es  guardado en la “memory texture” para usarse en la fase de la rasterización, o  rasterizarse y los fragmentos resultantes mezclarse en el “frame buffer” si son  generados desde datos geométricos. &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-1680288750915258840?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/1680288750915258840/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=1680288750915258840&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1680288750915258840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1680288750915258840'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/03/opengl-basics-el-comienzo-de-todo-ii.html' title='OpenGL basics: el comienzo de todo (II)'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-FNnFrJOJdns/TW7JM1Wxf7I/AAAAAAAAADo/qQ1c1jN123A/s72-c/pipeline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-6535322908435680698</id><published>2011-03-01T15:16:00.000-08:00</published><updated>2011-03-02T14:52:26.837-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opengl basico pipeline'/><title type='text'>OpenGL basics: el comienzo de todo (I)</title><content type='html'>&lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Por mi experiencia, muchos programadores de gráficos utilizan las APIs gráficas como si fueran una “caja negra”.&lt;br /&gt;Esto es bueno en un primer momento porque obtienes unos buenos resultados de una manera rápida pero tiene la contrapartida de que cuando se quiere profundizar en el uso de estas librerías no se tiene la base necesaria para ello. Además de que es posible que surjan errores fácilmente evitables.&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;Después de esta charla de “abuelo cebolleta”  :-)  pasemos a lo interesante.   &lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;OpenGL es una API que permite abstraerse del  hardware de gráficos.  Una aplicación que use OpenGL por una parte &lt;b&gt;pintará primitivas&lt;/b&gt;, por otra &lt;b&gt;seteará&lt;/b&gt; &lt;b&gt;diversos comandos&lt;/b&gt;.  &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;Las primitivas son definidas como  un conjunto de uno o mas vértices. Los datos (coordenadas, colores,  normales, coord. de texturas,...) están asociados a los vértices.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;Los comandos son procesados en el  orden en que son mandados además es muy importante el hecho de que  OpenGL no pintará una primitiva hasta que reciba todos los comandos  asociados. Veremos más adelante como estos comandos alterarán la &lt;a href="http://www.opengl.org/documentation/specs/version1.1/state.pdf"&gt;sencilla máquina de estados&lt;/a&gt;&amp;nbsp;por la que está formada OpenGL  :-).&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-6535322908435680698?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/6535322908435680698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=6535322908435680698&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/6535322908435680698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/6535322908435680698'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/03/opengl-basics-el-comienzo-de-todo.html' title='OpenGL basics: el comienzo de todo (I)'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4950768892839705021.post-1238475410066460341</id><published>2011-02-27T13:18:00.000-08:00</published><updated>2011-03-02T14:52:47.793-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videojuegos 2d 3d opengl'/><title type='text'>Bienvenido a gamer development!</title><content type='html'>Hola! He creado este blog para escribir todas mis experiencias en el desarrollo de videojuegos. Todo lo que voy aprendiendo sobre este tema y que creo que puede ser útil lo iré compartiendo por aquí.&lt;br /&gt;Siéntete libre para comentar cualquiera de los contenidos de este blog :-)&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-4srGJu48Ads/TWrAzf7hZjI/AAAAAAAAADc/E4QPbHtQItQ/s1600/guybrush.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-4srGJu48Ads/TWrAzf7hZjI/AAAAAAAAADc/E4QPbHtQItQ/s1600/guybrush.gif" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Guybrush Threepwood. Monkey Island 2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4950768892839705021-1238475410066460341?l=gamerdevel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamerdevel.blogspot.com/feeds/1238475410066460341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4950768892839705021&amp;postID=1238475410066460341&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1238475410066460341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4950768892839705021/posts/default/1238475410066460341'/><link rel='alternate' type='text/html' href='http://gamerdevel.blogspot.com/2011/02/bienvenido-gamer-development.html' title='Bienvenido a gamer development!'/><author><name>Juan Manuel Ramón Vigo</name><uri>http://www.blogger.com/profile/09797932741121625397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/-36ZnagBaNDs/TWq6jvcDveI/AAAAAAAAAB4/bqYZxguUMMk/s220/27341_100000997282844_4239_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-4srGJu48Ads/TWrAzf7hZjI/AAAAAAAAADc/E4QPbHtQItQ/s72-c/guybrush.gif' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
