<?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-7745698698159787562</id><updated>2012-01-24T00:48:53.819-08:00</updated><category term='Programación'/><category term='Videos'/><category term='Recursos y Herramientas'/><category term='Juegos'/><category term='Tutoriales'/><category term='SDL'/><category term='Demos'/><category term='OpenGL'/><title type='text'>Castillo Fantasma</title><subtitle type='html'>Los pasos de un novato en el mundo de los videojuego.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-7603215779060449336</id><published>2012-01-18T23:26:00.000-08:00</published><updated>2012-01-24T00:48:53.828-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Demos'/><title type='text'>Deslizador de Portadas</title><content type='html'>&lt;div style="text-align: justify;"&gt;Mi objetivo por aprender SDL y OpenGL es combinarlos para programar juegos. Pues bien aun no termino de&amp;nbsp;desarollar&amp;nbsp;un nuevo juego que tengo en mente. Pero por el momento le dejo un Demo que programe en hora y media aunque con muchas&amp;nbsp;distracciones.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El demo trata de un simple&amp;nbsp;deslizador&amp;nbsp;de portadas hecho con las&amp;nbsp;librerías&amp;nbsp;de SDL y OpenGL,&amp;nbsp;aunque&amp;nbsp;no es muy espectacular, pero aplica los principios&amp;nbsp;básicos&amp;nbsp;de combinar estas dos&amp;nbsp;librerías.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;object width="320" height="266" 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/G8vEsAqLDcg/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/G8vEsAqLDcg?version=3&amp;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/G8vEsAqLDcg?version=3&amp;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="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-7603215779060449336?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/7603215779060449336/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2012/01/deslizador-de-portada.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/7603215779060449336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/7603215779060449336'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2012/01/deslizador-de-portada.html' title='Deslizador de Portadas'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total><georss:featurename>Juárez, CHIH, México</georss:featurename><georss:point>31.700129553985924 -106.45614624023438</georss:point><georss:box>31.592679053985925 -106.61338824023437 31.807580053985923 -106.29890424023438</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-3512465941641982128</id><published>2011-12-13T13:22:00.000-08:00</published><updated>2011-12-22T01:10:34.132-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 04 - Luces</title><content type='html'>&lt;div style="text-align: justify;"&gt;Vamos a hablar un poco sobre la luz en OpenGL. Supongo que para mucho esto resultara muy atractivo a la vista y en&amp;nbsp;verdad&amp;nbsp;lo es. La luz y los materiales van de la mano.&amp;nbsp;Anteriormente hemos estado dibujando figuras y dando color a los&amp;nbsp;vértices,&amp;nbsp;pero los materiales nos brinda la&amp;nbsp;oportunidad&amp;nbsp;de darle mas realismo a nuestro objeto necesitamos a la luz para que el incida sobre el objeto y lo&amp;nbsp;ilumine asi que comenzaremos con ello.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;Retomare el&amp;nbsp;código&amp;nbsp;de la&amp;nbsp;&lt;/span&gt;&lt;a href="http://isakishi.blogspot.com/2011/12/opengl-leccion-03-transformaciones.html"&gt;lección 03&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&amp;nbsp;y sobre ella trabajare.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Este código lo he compilado en Linux y Windows.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar las cabeceras &amp;nbsp;por "glut.h".&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;(Esta es la primera&amp;nbsp;revisión,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;así&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/yqPNqlO9hJA/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yqPNqlO9hJA?version=3&amp;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/yqPNqlO9hJA?version=3&amp;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;br /&gt;Primero veamos algo de sencilla&amp;nbsp;teoría.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Luces&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para usar la luz en OpengGL es necesario activarla.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;glEnable(GL_LIGHTING); &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Activa la luz&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;glDisable(GL_LIGHTING); &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; //Desactiva la luz&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ademas de ello OpenGL estable poder usar ocho luces y hay que activar la que vayamos a usar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;glEnable(GL_LIGHT0) &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;//Activa la primera luz&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;b&gt;glEnable(GL_LIGHT7) &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;//Activa octava luz&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Pero ademas luz cuenta con distintas propiedades. Hablemos &amp;nbsp;un poco&amp;nbsp;acerca&amp;nbsp;la luz y sus tres componentes que son: ambiental, difusa y especular.&amp;nbsp;En OpenGL estas&amp;nbsp;cuentan&amp;nbsp;con tres&amp;nbsp;componentes&amp;nbsp;de color (RGB) y un valor alpha (trasparencias)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Luz Ambiental&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esta luz no proviene de&amp;nbsp;ningún&amp;nbsp;punto en especifico, si no que incide y rebota desde varios puntos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Luz Difusa&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Es la luz que ilumina al objeto y rebota en todas&amp;nbsp;direcciones&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Luz Especular&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Esta es el brillo o reflejo que produce el objeto al ser visto por una persona desde el punto de&amp;nbsp;refracción.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ademas de los&amp;nbsp;componentes&amp;nbsp;de la luz&amp;nbsp;también&amp;nbsp;existen tres formas en que&amp;nbsp;los rayos de luz se emiten.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Direccional:&amp;nbsp;&lt;/b&gt;Los rayos de la luz son paralelos&amp;nbsp;entre&amp;nbsp;si , no existe&amp;nbsp;atenuación&amp;nbsp;con al&amp;nbsp;distancia. El sol es&amp;nbsp;único&amp;nbsp;capas &amp;nbsp;de hacer esto.&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Puntual o&amp;nbsp;posicional&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La luz se emite desde un punto en todas direcciones, ejemplo una fogata.&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Focal&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La luz sale desde un punto y crea una cono de&amp;nbsp;iluminación, esta puede necesitar algunos&amp;nbsp;parámetros&amp;nbsp;extra como: un angulo y una distancia de&amp;nbsp;atenuación. Ejemplo una lampara de mano.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: -webkit-auto;"&gt;La funcion encargada de definir la luces es:&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;b&gt;glLightFv(GLenum luz, GLenum, Parametros, GLfloat Color[4]);&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Luz:&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; D&lt;/span&gt;&lt;/b&gt;&lt;b style="color: #134f5c; text-align: justify;"&gt;esde GL_LIGHT0 hasta GL_LIGHT7&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Parametros:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;GL_AMBIENT&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Color del ambiente&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &lt;/span&gt;&amp;nbsp;GL_DIFUSSE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; //Color de la luz reflejada&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;GL_SPECULAR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Color del brillo&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;GL_POSITION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Posición&amp;nbsp;de la luz, puede ser de dos tipos&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -w = 0.0f &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Luz Direccional&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -w = 1.0f &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Luz Puntual o focal&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;GL_SPOT_CUTOFF &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Angulo de abertura desde 0 hasta 90 grados&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;GL_SPOT_EXPONENT &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Perdida de intensidad al centro desde 0 hasta &lt;/span&gt;128&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="text-align: -webkit-auto;"&gt;&amp;nbsp; &amp;nbsp;GL_CONSTANTA_ATTENUATION &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Por defecto 1. (0.0 - 1.0)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="text-align: -webkit-auto;"&gt;&amp;nbsp; &amp;nbsp;GL_LINEAR_ATTENUATION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Por defecto 1. (0.0 - 1.0)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="text-align: -webkit-auto;"&gt;&amp;nbsp; &amp;nbsp;GL_QUADRATIC_ATTENUATION &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Por defecto 1. (0.0 - 1.0)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;Retomare el&amp;nbsp;código&amp;nbsp;de la&amp;nbsp;&lt;/span&gt;&lt;a href="http://isakishi.blogspot.com/2011/12/opengl-leccion-03-transformaciones.html"&gt;lección 03&lt;/a&gt;. Vamos a agregar una luz direccional. No cambia mucho con respecto a la puntual o focal. Primero agregar algunas variables que&amp;nbsp;servirán&amp;nbsp;para incrementar los&amp;nbsp;parámetros&amp;nbsp;de la luz y mover la&amp;nbsp;posición&amp;nbsp;de esta.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Definimos algunas variables&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat ambiente = 0.7f;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat difusa = 0.7f;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat especular = 1.0f;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzPos_x = 1.0f;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzPos_y = 1.0f;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzPos_z = 1.0f;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Inicia los Valores de OPengl&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void iniciar(){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//Activar parametor del Buffer de Profundidad&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glClearDepth(1.0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glDepthFunc(GL_LEQUAL);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glEnable(GL_DEPTH_TEST);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;//Activar cortado de caras&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glFrontFace(GL_CW);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glCullFace(GL_BACK);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glEnable(GL_CULL_FACE);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; //Activamos la luz&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt; glEnable(GL_LIGHTING);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&amp;nbsp; glEnable(GL_LIGHT0);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; //Tipo de Sombredo&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; glShadeModel(GL_SMOOTH);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En la funcion iniciar() lo unico que hacemos es activar el modo de&amp;nbsp;iluminación&amp;nbsp;y la luz 1.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Se encarga de dibuja las primitivas y volcar el buffer&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void dibuja(){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Limpia los buffers de color y profundidad&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glLoadIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;gluLookAt(0.0, 3.0, 10.0, &amp;nbsp; 0.0, 0.0, 0.0, &amp;nbsp;0.0, 1.0, 0.0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Definimos los parametro de la luz&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzDifusa[4] = {difusa, difusa, difusa, 1.0f};&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzAmbiental[4] = {ambiente, ambiente, &amp;nbsp;ambiente, 1.0f};&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzEspecular[4] = {especular, especular, especular, 1.0f};&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLfloat luzPosicion[4] = {luzPos_x, luzPos_y, luzPos_z, 0.0f};&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Luz numero 0&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiental);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glLightfv(GL_LIGHT0, GL_POSITION, luzPosicion);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Guardamos la matriz&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glPushMatrix();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glTranslatef(0.0f, 0.0f, 0.0f);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glutSolidTeapot(1.0f); &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b style="color: #134f5c;"&gt;//Dibujamos la tetera solida&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glTranslatef(-3.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glPopMatrix();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Intercambiamos los buffers&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glutSwapBuffers();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por el momento dentro de dibuja()&amp;nbsp;definiré&amp;nbsp;el arreglo que&amp;nbsp;contendrá&amp;nbsp;las variables para las tres propiedades de la luz y una arreglo para la&amp;nbsp;posición de la luz. Notar que el ultimo&amp;nbsp;parámetro&amp;nbsp;de la&amp;nbsp;posición&amp;nbsp;de la luz es 0.0f. Luz direccional.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Luego hay que&amp;nbsp;asignar&amp;nbsp;los arreglos a cada una las distintas propiedades de la luz 0 y la&amp;nbsp;posición&amp;nbsp; de esta.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por ultimo agregare algunas teteras que serviran de modelo, hay que notar que ahora tiene caras con glutSolidTeapot en vez de glutWireTeapot.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void mostrarValores(){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Ambiental: %f\n", ambiente);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Difusa: %f\n", difusa);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Especular: %f\n\n", especular);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void posicionLuzValores(){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Posicion en x: %f\n", luzPos_x);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Posicion en y: %f\n", luzPos_y);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;printf("Luz Posicion en z: %f\n\n", luzPos_z);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Luego tenemos estas dos funciones que lo&amp;nbsp;único&amp;nbsp;que haces es mostrar los valores actuales de la luz y su&amp;nbsp;posición.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Igual que la vez anterior agregamos algunos eventos de teclado para cambiar los valores de la luz &amp;nbsp;y su&amp;nbsp;posición.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Incrementa y drecementa los valores para hacer transformacion al presionar las teclas&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void teclado(unsigned char tecla, int x, int y){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//Luz ambiente&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;if(tecla == 'q' || tecla == 'Q'){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ambiente += 0.1f;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; mostrarValores();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; glutPostRedisplay();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;else if(tecla == 'w' || tecla == 'W'){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ambiente -= 0.1f;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; mostrarValores();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; glutPostRedisplay();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eso seria todos los cambios dentro del&amp;nbsp;código&amp;nbsp;para esta&amp;nbsp;lección.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4_KMHLEAP7k/Tugm7bky5xI/AAAAAAAAAyk/rFiALwCBebY/s1600/luces.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-4_KMHLEAP7k/Tugm7bky5xI/AAAAAAAAAyk/rFiALwCBebY/s400/luces.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;(Ejemplo de una luz puntual)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora bien aun falta agregar los materiales al objeto para poder ver los reflejos, pero eso sera el siguiente paso.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Teclas:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;q/w: &lt;/b&gt;Luz Ambiente&lt;br /&gt;&lt;b&gt;a/s: &lt;/b&gt;Lus Difusa&lt;br /&gt;&lt;b&gt;z/x: &lt;/b&gt;Luz Especular&lt;br /&gt;&lt;b&gt;e/r: &lt;/b&gt;Mover la luz en x&lt;br /&gt;&lt;b&gt;d/f:&amp;nbsp;&lt;/b&gt;Mover la luz en y&lt;br /&gt;&lt;b&gt;c/v:&amp;nbsp;&lt;/b&gt;Mover la luz en z&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga&amp;nbsp;Código&amp;nbsp;Fuente:&lt;/span&gt; &lt;a href="http://www.mediafire.com/?9h3n91px0s0uvw9"&gt;leccion_04&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-3512465941641982128?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/3512465941641982128/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-03-luces-parte.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3512465941641982128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3512465941641982128'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-03-luces-parte.html' title='OpenGL Lección 04 - Luces'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-4_KMHLEAP7k/Tugm7bky5xI/AAAAAAAAAyk/rFiALwCBebY/s72-c/luces.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-5260648355220063804</id><published>2011-12-08T22:43:00.001-08:00</published><updated>2011-12-11T09:45:13.611-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 03 - Transformaciones</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;En este breve tutorial explicar como se realizan la&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;traslación&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;rotación&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;y escaldo de una figura. Retomare el&amp;nbsp;código&amp;nbsp;de la&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte_07.html"&gt;lección 02&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px;"&gt;&amp;nbsp;y sobre ella trabajare.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Este código lo he compilado en Linux y Windows.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px; text-align: justify;"&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar las cabeceras &amp;nbsp;por "glut.h".&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;(Esta es la primera&amp;nbsp;revisión,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;así&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px; text-align: justify;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&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/XHOOzf7fgms/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XHOOzf7fgms?version=3&amp;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/XHOOzf7fgms?version=3&amp;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 style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px; text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Trasladar Rotar y Escalar&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;La tres formas&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;básicas&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;de transforma un&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;objeto son:&amp;nbsp;Trasladar, rotar y escalar. La forma de aplicarlas es muy sencilla es mediante el llamado de estas funciones.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Trasladar la figura por eje&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;con respecto&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;al&amp;nbsp;parámetro&amp;nbsp;indicado&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;glTranslatef(GL_float x,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float y,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float z&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;//Rota la figura en grados, entorno al eje&amp;nbsp;normalmente&amp;nbsp;de magnitud &amp;nbsp;= 1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;glRotatef(&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;GL_float grados,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;GL_float x,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float y,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float z&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;//Escala la figura con respecto al&amp;nbsp;parámetro&amp;nbsp;indicado&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;glScalef(&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;GL_float x,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float y,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;GL_float z&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #222222; line-height: 18px;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Como ven las&amp;nbsp;trasformaciones&amp;nbsp;son muy sencillas. Pero ahora bien estas deben de seguir este orden descrito: Primero Trasladar, luego rotar y por ultimosEscalar, esto es debido a que OpenGL apila las&amp;nbsp;trasformaciones y si primero rotamos y luego trasladamos a lo largo del eje "x" nos daremos cuenta de mueve en una&amp;nbsp;dirección&amp;nbsp;diferente a la prevista.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Retomando el codigo de la &lt;a href="http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte_07.html"&gt;leccion_02&lt;/a&gt; lo primero que&amp;nbsp;haré&amp;nbsp;sera agregar tres variables&amp;nbsp;globales&amp;nbsp;que se encargaran de increnmentar y desincremntar el valor de traslado, rotado y escalado.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;GLfloat transladar = 0.0f;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;GLfloat rotar = 0.0f;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;GLfloat escalar = 1.0f;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;Ahora pasemos a la funcion de dibujo() que ya sabemos que hace.&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Se encarga de dibuja las primitivas y volcar el buffer&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void dibuja(){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;//Restablecemos la ubicacion&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;gluLookAt(0.0, 3.0, 10.0, &amp;nbsp; 0.0, 0.0, 0.0, &amp;nbsp;0.0, 1.0, 0.0);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPushMatrix();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glTranslatef(-3.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutWireTeapot(1.0f);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPopMatrix();&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPushMatrix();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;//Transfomaciones&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glTranslatef(transladar, 0.0f, 0.0f); &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;b style="color: #134f5c;"&gt;//Transalada la figura en el eje x&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;  &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glRotatef(rotar, 0.0f, 1.0f, 0.0f);&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt; &lt;b&gt;      &lt;/b&gt;&lt;/span&gt;&lt;b style="color: #134f5c;"&gt;//Rotar la figura entorno al eje y&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glScalef(escalar, escalar, escalar);&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;      &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;b style="color: #134f5c;"&gt;//Escalar la figura en todos sus ejes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutWireTeapot(1.0f);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPopMatrix();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="line-height: 18px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutSwapBuffers();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Dibujare dos teteras. La primera&amp;nbsp;servirá&amp;nbsp;como referencia y a la segunda le aplicare las&amp;nbsp;trasformaciones. Con glTranslatef() movere la figura a lo lago del eje "x" con el valor de la varible global que declare al principio. glRotatef(), rotara con los grados indicados en torno al eje y. Por ultimo escalaremos la figura en todos sus ejes con glScalef().&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Para hacerlo mas interactivo agregaremos eventos de teclado que permitan&amp;nbsp;interactuar&amp;nbsp;con las&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;trasformaciones&amp;nbsp;pudiendo cambiar los valores para moverlo, girarlo o cambiar de&amp;nbsp;tamaño&amp;nbsp;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;//Incrementa y drecementa los valores para hacer transformacion al presionar las teclas&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;void teclado(unsigned char tecla, int x, int y){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="line-height: 18px; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="line-height: 18px; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;//&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Traslación&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(tecla == 'q' || tecla == 'Q'){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;transladar += 0.2f;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glutPostRedisplay();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;else if(tecla == 'a' || tecla == 'A'){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;        &lt;/span&gt;transladar -= 0.2f;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;        &lt;/span&gt;glutPostRedisplay();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;La&amp;nbsp;función&amp;nbsp;teclado recibe tres parametros, el primero de ellos es el teclado, los otros dos hacen referencia a mouse, solo tomaremos los del teclado. La funcion que realiza es muy sencilla. Si la tecla indicada entre comillas simples &amp;nbsp;es presionada este&amp;nbsp;efectuara&amp;nbsp;el incremento o desincremento del valor de la variable indicada, en este caso transladar. La funcion glutPostRedisplay(), redibuja la escena cada vez que esto ocurre. Igual aplicaremos para las&amp;nbsp;demás&amp;nbsp;trasformaciones.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Por ultimo en el main agregamos los evento con glutKeyboardFunc() que llama a nuestra&amp;nbsp;función&amp;nbsp;teclado&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; line-height: 18px;"&gt;glutDisplayFunc(dibuja);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; line-height: 18px;"&gt;glutReshapeFunc(redimensionar);&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #990000; line-height: 18px;"&gt;glutKeyboardFunc(teclado);&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; line-height: 18px;"&gt;glutMainLoop();&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #134f5c; line-height: 18px;"&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Por ultimo he de decir que pruebes cambiando el orden las trasformaciones para ver el efecto que estas tiene sobre el objeto.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;Teclas usadas para las transformaciones:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;q/a&lt;/b&gt;: Traslada el objeto&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;w/s:&lt;/b&gt; Rota el objeto&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;e/d:&lt;/b&gt; Escala el objeto&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Descarga&amp;nbsp;Código&amp;nbsp;Fuente:&lt;/span&gt;&lt;/span&gt; &lt;a href="http://www.mediafire.com/?i7qac4a4zgmojkf" style="color: #222222; line-height: 18px;"&gt;leccion_03&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-5260648355220063804?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/5260648355220063804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-03-transformaciones.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5260648355220063804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5260648355220063804'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-03-transformaciones.html' title='OpenGL Lección 03 - Transformaciones'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-2964355754161487777</id><published>2011-12-07T23:01:00.001-08:00</published><updated>2011-12-10T00:31:02.427-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 02 - Dibujar Figuras Parte II</title><content type='html'>&lt;div style="text-align: justify;"&gt;&amp;nbsp;Es momento de empezar a dibujar algunas figuras sencillas con la primitivas de OpenGL, ademas de usar el buffer de profundidad y corte de caras. Retomare el&amp;nbsp;código&amp;nbsp;de la&amp;nbsp;&lt;a href="http://isakishi.blogspot.com/2011/12/opengl-leccion-01-inicializar-una.html"&gt;lección&amp;nbsp;01&lt;/a&gt;&amp;nbsp;y sobre el trabajare. Pondre todo el&amp;nbsp;código&amp;nbsp;y luego explicare los cambios hechos.&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Este código lo he compilado en Linux y Windows.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit; line-height: 18px; text-align: justify;"&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar las cabeceras &amp;nbsp;por "glut.h".&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;(Esta es la primera&amp;nbsp;revisión,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;así&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&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/rlHaDLKulq8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rlHaDLKulq8?version=3&amp;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/rlHaDLKulq8?version=3&amp;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 style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: inherit; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Si uno quiere dibujar figuras muy complejas&amp;nbsp;indicando manualmente&amp;nbsp;vértice&amp;nbsp;por vertice&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;a la larga resulta muy tedioso. Pero si entendemos la forma&amp;nbsp;básica&amp;nbsp;en que se crean figuras en OpenGL entonces cabe la posibilidad de que podemos crear un sencillo y&amp;nbsp;básico&amp;nbsp;modelador de objetos o en todo caso exportar modelos.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si&amp;nbsp;leíste&amp;nbsp;la primer parte de este tutorial seguramente casi&amp;nbsp;inmediatamente&amp;nbsp;sabras que hacen las nuevas funciones con solo verlas. Como ya explique como crear una venta con GLUT y el modelo de&amp;nbsp;visualización&amp;nbsp;dejare fuera esas partes.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Librerias que se usaran, cambian de acuerodo a sistema&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "GL/gl.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "GL/glu.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "GL/glut.h"&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Inicia los&amp;nbsp;Parámetros&amp;nbsp;de OPengl&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void iniciar(){&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClearDepth(1.0);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glDepthFunc(GL_LEQUAL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnable(GL_DEPTH_TEST);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glFrontFace(GL_CW);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glCullFace(GL_BACK);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnable(GL_CULL_FACE);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glShadeModel(GL_SMOOTH);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Dibuja figuras de OpenGL por medio de primitivas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void dibuja(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;gluLookAt(0.0, 0.0, 6.0, &amp;nbsp; 0.0, 0.0, 0.0, &amp;nbsp;0.0, 1.0, 0.0);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPushMatrix();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glTranslatef(1.5f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glBegin(GL_TRIANGLES);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glColor3f(1.0f, 1.0f, 1.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(0.0f, 1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(-1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnd();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPopMatrix();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPushMatrix();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glTranslatef(-1.5f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glBegin(GL_QUADS);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glColor3f(1.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(-1.0f, 1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glColor3f(0.0f, 1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(1.0f, 1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glColor3f(0.0f, 0.0f, 1.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glColor3f(1.0f, 0.0f, 1.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(-1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnd();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPopMatrix();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutSwapBuffers();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Mantiene la&amp;nbsp;relación&amp;nbsp;de aspecto en las figuras&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void redimensionar(GLint ancho, GLint alto){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glViewport(0, 0, ancho, alto);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glMatrixMode(GL_PROJECTION);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;gluPerspective(45.0f, (GLfloat)ancho/(GLfloat)alto, 0.1f, 100.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glMatrixMode(GL_MODELVIEW);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Main de nuestro programa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;int main(int argc, char **argv){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInit(&amp;amp;argc, argv);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitWindowSize(320,240);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitWindowPosition(120,120);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutCreateWindow("leccion_02 OpenGL");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;iniciar();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutDisplayFunc(dibuja);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutReshapeFunc(redimensionar);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutMainLoop();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;return 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;Ok primero vayamos a la funcion main(), aqui lo unico que cambia es que le indicamos a glut el uso del parametro GLUT_DEPTH para la profundidad.&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Inicia los&amp;nbsp;Parámetros&amp;nbsp;de GLUT&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #222222;"&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;int main(int argc, char **argv){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInit(&amp;amp;argc, argv);&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE |&lt;/span&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;GLUT_DEPTH&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitWindowSize(320,240);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutInitWindowPosition(120,120);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutCreateWindow("leccion_02 OpenGL");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;iniciar();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutDisplayFunc(dibuja);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutReshapeFunc(redimensionar);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutMainLoop();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Ahora&amp;nbsp;movámonos&amp;nbsp;a la funcion init(). Aqui hay varias cosas nuevas que le indicamos usar a OpenGL.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #134f5c;"&gt;//Inicia los&amp;nbsp;Parámetros&amp;nbsp;de OPenGL&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void iniciar(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;//Establece el color de limpiado&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;//Activar parametor del Buffer de Profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glClearDepth(1.0);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glDepthFunc(GL_LEQUAL);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnable(GL_DEPTH_TEST);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;//Activar cortado de caras&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;glFrontFace(GL_CW);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glCullFace(GL_BACK);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnable(GL_CULL_FACE);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;//Tipo de Sombredo suavidado&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glShadeModel(GL_SMOOTH);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;Las primeras tres lineas en rojo indica el valor de limpiado del buffer de profundidad "z". luego el tipo de limpiado GL_LEQUAL indica que no dibuja todo aquello &amp;lt;= Z. Por ultimo activamos el buffer de profundidad.&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;Las otras tres lineas rojas hacen referencia a activar el corte de caras. La primera indica el sentido de los vertices para dibujar las caras GL_CW sigifica sentido horario, la segunda linea, glCullFace(GL_BACK) indica que no se calculan la caras traseras y la ultima linea indica a OpenGL activar el corte de caras.&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Ahora pasemos a la&amp;nbsp;función&amp;nbsp;que dibuja las figuras.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #222222;"&gt;&lt;b style="color: #134f5c;"&gt;//Dibuja figuras de OpenGL por medio de primitivas&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void dibuja(){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;span class="Apple-style-span" style="color: #990000;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;glClear(GL_COLOR_BUFFER_BIT |&lt;/span&gt; &lt;b style="color: #990000;"&gt;GL_DEPTH_BUFFER_BIT&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="color: black; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;gluLookAt(0.0, 0.0, 6.0, &amp;nbsp; 0.0, 0.0, 0.0, &amp;nbsp;0.0, 1.0, 0.0);&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &lt;b&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #990000;"&gt;glPushMatrix();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;glTranslatef(1.5f, 0.0f, 0.0f);&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glBegin(GL_TRIANGLES);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glColor3f(1.0f, 1.0f, 1.0f);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(0.0f, 1.0f, 0.0f);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;glVertex3f(-1.0f, -1.0f, 0.0f);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glEnd();&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glPopMatrix();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutSwapBuffers();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;Primero en la funcion glClear() debemos indicarle a OpenGL que cada vez que dibuja la escena este debe de limpiar el buffer de profundidad.&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;La&amp;nbsp;función&amp;nbsp;gluLookAt() estable el punto que nos situamos para observar la escena.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #222222; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Antes de dibujar nuestra figura podemos ver una&amp;nbsp;función&amp;nbsp;llama glPushMatrix(), esta se encarga de guardar la matriz para realizar&amp;nbsp;cálculos.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Ahora lo que hacemos es mover un poco hacia la derecha nuestra figura a&amp;nbsp;través&amp;nbsp;del eje x con glTranslatef(),&amp;nbsp;después&amp;nbsp;explicare esta&amp;nbsp;función.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Es momento de comenzar a dibujar la figura de un triangulo con glBegin(), dentro de ella le indicamos la forma en que queremos que interprete la figura (GL_TRIANGLES). En el siguiente&amp;nbsp;renglón&amp;nbsp;le indicamos el color que tomaran los vertices, todo los&amp;nbsp;vértices&amp;nbsp;tendrán&amp;nbsp;el mismo color hasta que indiquemos alguno diferente. Luego comenzamos a dibujar la figura indicando los&amp;nbsp;vértices&amp;nbsp;en sentido horario como indicamos con glFrontFace(). El primer&amp;nbsp;vértice&amp;nbsp;esta&amp;nbsp;ubicado&amp;nbsp;en la parte superior, el segundo es la parte inferior derecha y el ultimo en la parte inferior izquierda. Finalizamos indicando que son todos los&amp;nbsp;vértices&amp;nbsp;de la figura con glEnd() y por ultimo&amp;nbsp;restablecemos&amp;nbsp;la matriz con glPopMatrix().&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;La forma en que dibujamos el cuadrado es muy similar salvo que usamos glBegin(GL_QUADS); para indicarle que seran cuatro vertices para forma una cara. De hecho podemos dibujar un cuadrado con dos triangulos y muchas de las figuras mas complejas son dibujadas usandos solo&amp;nbsp;triángulos.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Aun falta mas cosas por cubrir como array de&amp;nbsp;vértices&amp;nbsp;o listas compiladas.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #222222;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga Codigo Fuente:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.mediafire.com/?41txl37sfojpqsf" style="color: #222222;"&gt;leccion_02.cpp&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-2964355754161487777?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/2964355754161487777/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte_07.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2964355754161487777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2964355754161487777'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte_07.html' title='OpenGL Lección 02 - Dibujar Figuras Parte II'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-5578629114362494388</id><published>2011-12-07T00:44:00.001-08:00</published><updated>2011-12-08T00:40:24.491-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 02 - Dibujar Figuras Parte I</title><content type='html'>&lt;div style="text-align: justify;"&gt;Supongo que estamos&amp;nbsp;ansiosos&amp;nbsp;por empezar a dibujar figuras en OpenGL. Pero primero tomaremos una breve&amp;nbsp;explicación&amp;nbsp;de como se crean figuras en Opengl.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;I - Vértices&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La forma en que OpenGL crea figuras es muy sencilla y es por medio de vertices. Un&amp;nbsp;vértices&amp;nbsp;esta representado por coordenadas en el espacio&amp;nbsp;tridimensional&amp;nbsp;que permite ubicar su&amp;nbsp;posición.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YptYBL0TAu4/Tt8uvMf2wmI/AAAAAAAAAyM/juNuGCKjlrc/s1600/vertex.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="95" src="http://4.bp.blogspot.com/-YptYBL0TAu4/Tt8uvMf2wmI/AAAAAAAAAyM/juNuGCKjlrc/s400/vertex.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;glVertex3f(1.0f, 0.0f, 1.0f); &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Vértices&amp;nbsp;con valor Real&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Pero con cuatro o cinco&amp;nbsp;vértices&amp;nbsp;se pueden dibujar muchas cosas, como puntos, lineas,&amp;nbsp;triángulos, cuadrados,&amp;nbsp;polígonos. Es por ello que le tenemos que indica a OpenGL la forma en que se utilizaran los&amp;nbsp;vértices.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;II - Crear Figuras a Través&amp;nbsp;de&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Vértices.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;OpenGL nos brinda 10 formas de poder de como poder manejar&amp;nbsp;vértices.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xnr3yrSAJ9Q/Tt8yJgGl3fI/AAAAAAAAAyU/O9ETCXO0jT4/s1600/vertices.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-xnr3yrSAJ9Q/Tt8yJgGl3fI/AAAAAAAAAyU/O9ETCXO0jT4/s320/vertices.jpg" width="242" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;Para indicarla la forma en que se&amp;nbsp;interpretara un grupo de&amp;nbsp;vertices para dibuja la primitiva se utiliza la funcion glBegin() y glEnd(). Todos los vertices contenidos entre estas dos funciones&amp;nbsp;serán&amp;nbsp;dibujados de la forma que se le indico con glBegin();.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;glBegin(GLenum Parametros); &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Le indicamos el tipo de&amp;nbsp;Parámetro&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-d6ldpcnagYs/Tt87ryRM3GI/AAAAAAAAAyc/07foV8KwkUE/s1600/begin.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-d6ldpcnagYs/Tt87ryRM3GI/AAAAAAAAAyc/07foV8KwkUE/s1600/begin.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;III - Colores en los&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Vértices&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La forma en que OpenGL representa los colores es mediante RGBA. &amp;nbsp;Rojo, verde, azul y en veces Alpha.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;void glColor3f(1.0, 0.0, &amp;nbsp;0.0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Ejemplo de color con 3 valor Real.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;void glColor4f(1.0, 0.0, &amp;nbsp;0.0, 0.5); &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Ejemplo de color con 4 valor Real.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Con valores de tipo Real el valor del color oscila entre 0.0 y 1.0.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;IV - El Orden de los&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;vértices&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Es importante saber que se debe tener en cuenta el orden en que se indican los&amp;nbsp;vértices al momento de dibujar la primitivas. Por ejemplo si dibujamos un triangulo este&amp;nbsp;tendrá&amp;nbsp;dos caras; frontal y trasera.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para indicar el orden de lo vertices y saber cual sera la cara frontal se utiliza:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;glFrontFace(GLenum&amp;nbsp;Parámetros);&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Posibles Parametros&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;GL_CC &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &amp;nbsp;//Sentido horario del reloj&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;GL_CCW &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Sentido Anti-horario del reloj&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Existirán&amp;nbsp;casos en los que nunca veamos la cara trasera de esta, entonces no es&amp;nbsp;necesario&amp;nbsp;calcularla para ello se utiliza la&amp;nbsp;función.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;glCullFace(GLenum&amp;nbsp;Parámetros); &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;//Indicamos la cara que no calcula&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Posibles Parametros&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;GL_FRONT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;&amp;nbsp;//No calcula la cara de enfrente&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;GL_BACK &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;No calcula la cara de&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;atrás&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para activar el corte de caras es necesario indicarselo a OpenGL mediante la&amp;nbsp;función&amp;nbsp;glEnable() y para desactivarlo con glDisable().&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;glEnable(GL_CULL_FACE); &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Activa el corte de caras&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;glDisable(GL_CULL_FACE); &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Desactiva&amp;nbsp;el corte de caras&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;V - La&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;cámara&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para determinar la matriz de&amp;nbsp;proyección&amp;nbsp;es&amp;nbsp;necesario&amp;nbsp;establecer un punto de vista y &amp;nbsp; mediante la funcion glLookAt() podemos lograr esto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Posicion de la camara&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;glLookAt(GLdouble Posicion_X,&amp;nbsp;GLdouble Posicion_Y, GLdouble Posicion_Z,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GLdouble enfocar_X,&amp;nbsp;&amp;nbsp;GLdouble enfocar_Y,&amp;nbsp;&amp;nbsp;GLdouble enfocar_Z,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GLdouble Inc_X,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLdouble Inc_Y,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLdouble Inc_Z);&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;glLookAt recibe tres triadas de&amp;nbsp;parámetros, lo primeros tres indican la&amp;nbsp;posición&amp;nbsp;de la&amp;nbsp;cámara&amp;nbsp; le segunda triada indica hacia que punto se esta viendo y la ultima triada indica cual es el eje que apunta hacia arriba.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;VI - Buffer de&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando se dibujan objetos tridimensional es necesario comprobar si se dibujan por delante o por&amp;nbsp;detrás&amp;nbsp;de otro objeto. Para saber esto OpenGL almacena en un buffer el eje Z y&amp;nbsp;después&amp;nbsp;comprueba su distancia de profundidad para evitar dibujar por encima de otro que este mas cercano hacia nosotros.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;glEnable(GL_DEPTH_TEST);&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;//Activa el buffer de Profundidad&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;glDisable(GL_DEPTH_TEST);&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Desactiva el buffer de Profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;glClearDepth (GLfloat z); &lt;/b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; //Define el valor de limpiado&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Primero hay que activar el buffer de profundidad y&amp;nbsp;después&amp;nbsp;le indicamos la el valor para limpiar el eje z, por ultimo debemos de decirle como compara la distancia.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;glDepthFunc(GLenum Parametro); &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Compara la distancia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;GL_NEVER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Siempre false&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;GL_LESS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//true si z&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;referencia &amp;nbsp;&amp;lt; z profundidad&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;GL_EQUAL &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;/&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;/true si z&lt;/b&gt;&lt;b&gt;&amp;nbsp;referencia &amp;nbsp;= z profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;GL_LEQUAL &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//true si z&lt;/b&gt;&lt;b&gt;&amp;nbsp;referencia &amp;nbsp;&amp;lt;= profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;GL_GREATER &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;/&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;/true si z&lt;/b&gt;&lt;b&gt;&amp;nbsp;referencia &amp;nbsp;&amp;gt; z profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;GL_NOTEQUAL &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;/&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;/true si z&lt;/b&gt;&lt;b&gt;&amp;nbsp;referencia != z profundidad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;GL_GEQUAL &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//true si z&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;referencia &amp;nbsp;&amp;gt;= z profundidad&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;GL_ALWAY &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Siempre true&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Al igual que con buffer de color&amp;nbsp;también hay que limpiar el buffer de profundidad.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;glClear(GL_DEPTH_BUFFER_BIT);&lt;/b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp;//Limpia el buffer de Profundidad&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-5578629114362494388?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/5578629114362494388/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5578629114362494388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5578629114362494388'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-02-dibujar-figuras-parte.html' title='OpenGL Lección 02 - Dibujar Figuras Parte I'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YptYBL0TAu4/Tt8uvMf2wmI/AAAAAAAAAyM/juNuGCKjlrc/s72-c/vertex.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4695544649737251944</id><published>2011-12-04T00:02:00.001-08:00</published><updated>2011-12-22T01:13:07.017-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 01 - Inicializar una Ventana con Glut</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Vamos a comenzar con nuestro primer ejemplo sencillo con OpenGL y glut. Lo que vamos a hacer es crear una ventana con glut, inicializar unas variables de OpenGL y dibujar una objeto en pantalla. Este&amp;nbsp;código&amp;nbsp;lo probado en Windows y Linux sin modificar&amp;nbsp;código principal lo&amp;nbsp;único&amp;nbsp;que cambia son los include de las&amp;nbsp;librerías.&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; line-height: 18px;"&gt;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a correciones, sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Supongo que usted tiene alguna idea&amp;nbsp;básica&amp;nbsp;de&amp;nbsp;álgebra.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bqzDRg5Iyuo/TttDxBk99OI/AAAAAAAAAv8/c0RtKj4lLkg/s1600/01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/-bqzDRg5Iyuo/TttDxBk99OI/AAAAAAAAAv8/c0RtKj4lLkg/s320/01.jpg" style="cursor: move;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por comodidad trabajare en entorno linux, asi que los include&amp;nbsp;serán:&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;#include "GL/gl.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;#include "GL/glu.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;#include "GL/glut.h"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Mientras que para Windows como explique &lt;a href="http://isakishi.blogspot.com/2011/12/opengl-introduccion-00.html"&gt;anteriormente&lt;/a&gt;&amp;nbsp;solo bastara con usar:&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;#include "glut.h"&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Bueno comencemos con este sencillo ejemplo, voy a pegar el&amp;nbsp;código&amp;nbsp;completo y luego abajo&amp;nbsp;iré&amp;nbsp;explicando mas detalladamente.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; #include "GL/gl.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; #include "GL/glu.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; #include "GL/glut.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; void iniciar(){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; void dibuja(){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glClear(GL_COLOR_BUFFER_BIT);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glTranslatef(0.0f, 0.0f, -10.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glutWireTeapot(3.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;glutSwapBuffers();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;void redimensionar(GLint ancho, GLint alto){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glViewport(0, 0, ancho, alto);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glMatrixMode(GL_PROJECTION);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;gluPerspective(45.0f, (GLfloat)ancho/(GLfloat)alto, 0.1f, 100.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glMatrixMode(GL_MODELVIEW);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;int main(int argc, char **argv){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutInit(&amp;amp;argc, argv);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutInitWindowSize(320,240);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutInitWindowPosition(120,120);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutCreateWindow("leccion_01 OpenGL");&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;iniciar();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutDisplayFunc(dibuja);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutReshapeFunc(redimensionar);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;glutMainLoop();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero en que nos fijaremos sera en la funcion main() , notaras que la&amp;nbsp;funciones&amp;nbsp;de "glut" comienza con su propio nombre.&amp;nbsp;Lo primero es pasar los argumentos que usa glutInit() para inicializarlo(duh!).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;glutInit(&amp;amp;argc, argv);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutInitWindowSize(320,240);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutInitWindowPosition(120,120);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutCreateWindow("leccion_01 OpenGL");&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;iniciar();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutDisplayFunc(dibuja);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutReshapeFunc(redimensionar);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;glutMainLoop();&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Con glutInitDisplayMode() lo que hacemos es pasar los parametros que utilizaremos, GL_RGBA se encarga de manejar los colores: rojo(R), verde(G), azul(B) y el valor alfa(A) que es el que se maneja las transparencias y junto con ellas iniciamos el doble buffer de glut que se encarga de dibujar en segundo plano la imagen que&amp;nbsp;aparecerá para parpadeo de imagenes mientras se dibujan.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Las dos siguientes lineas establecen el&amp;nbsp;tamaño&amp;nbsp;de la venta y la&amp;nbsp;posición&amp;nbsp;donde aparece nuestra ventana.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Entonces aparece la&amp;nbsp;función&amp;nbsp;iniciar(),&amp;nbsp;aquí&amp;nbsp;es donde empezaremos a establecer todos lo parametros iniciales de OpenGL que deseamos.&amp;nbsp;En ella puedes ver la&amp;nbsp;función&amp;nbsp;glClearColor(), se encarga establecer el color de fondo con que la pantalla sera limpiada (color negro), como ven le pasamos cuatro&amp;nbsp;parámetros&amp;nbsp;que son los colores RGBA y que van de entre 0.0 a 1.0.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void iniciar(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&amp;nbsp;  &lt;/span&gt;glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Regresando al main la siguente&amp;nbsp;función&amp;nbsp;que sigue es glutDisplayFunc(), se encarga de dibujar en pantalla la imagen y para ello tiene un puntero que tiene que llamar a la funcione que lo hara, en este caso dibuja().&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Regresamos nuevamente arriba a dibuja(). Aquí&amp;nbsp;es donde&amp;nbsp;empezamos&amp;nbsp;a redenrizar nuestra escena. Primero limpiamos el buffer con el color que le indicamos anteriormente y&amp;nbsp;después&amp;nbsp;cargamos la matriz identidad que lo&amp;nbsp;único&amp;nbsp;que haces es&amp;nbsp;ubicarnos&amp;nbsp;en el centro del nuestro de nuestro mapa de coordenadas. Ahora si dibujamos algo es posible que no lo veamos o que estemos dentro de nuestro objeto que dibujemos, es por ello que hay que alejarlo un poco de nosotros para verlo mejor, trasladamos nuestros coordenadas por el eje z con&amp;nbsp;glTranslatef(0.0f, 0.0f, -10.0f), y dibujamos nuestro objeto.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void dibuja(){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glClear(GL_COLOR_BUFFER_BIT);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glTranslatef(0.0f, 0.0f, -10.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutWireTeapot(3.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glutSwapBuffers();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;GLUT incluye una tetera y otros modelos como ejemplos para comenzar&amp;nbsp;rápido,&amp;nbsp;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;así&lt;/span&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;&amp;nbsp;que bastara con solo llamar&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;glutWireTeapot(3.0f), el valor que tiene indica el&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;tamaño&lt;/span&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;&amp;nbsp;que deseamos por ultimo solo queda llamar a glutSwapBuffers() que es el que se encarga de volcar el doble buffer que llamamos previamente.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Regresamos nuevamente al main para ver la que la&amp;nbsp;función&amp;nbsp;glutReshapeFunc() llama a redimencionar. Lo que&amp;nbsp;glutReshapeFunc() es llamada cuando la ventana sufre cambios en su apecto o sea redimencionar parar ello tiene dos&amp;nbsp;parámetros.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La&amp;nbsp;función&amp;nbsp;de redimencionar(), se encarga de que cuando nuestra ventana sea modifica esta mantenga el aspecto de la figura que dibuja. Los dos&amp;nbsp;parámetros&amp;nbsp;que tiene son los que le pasa&amp;nbsp;glutReshapeFunc().&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void redimensionar(GLint ancho, GLint alto){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glViewport(0, 0, ancho, alto);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glMatrixMode(GL_PROJECTION);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glLoadIdentity();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;gluPerspective(45.0f, (GLfloat)ancho/(GLfloat)alto, 0.1f, 100.0f);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;glMatrixMode(GL_MODELVIEW);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora hay que establecer el&amp;nbsp;tamaño&amp;nbsp;y la&amp;nbsp;posición&amp;nbsp;de la venta donde esta se proyectara con glViewPort, Luego hay que cargar las matrices de&amp;nbsp;proyección&amp;nbsp;para calcular la&amp;nbsp;posición&amp;nbsp;del objeto en el&amp;nbsp;espacio, restablecemos la matriz identidad y establecemos la vista que deseamos, en este caso en perspectiva.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gluPerspective(45.0f, (GLfloat)ancho/(GLfloat)alto, 0.1f, 100.0f);&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El primer&amp;nbsp;parámetro&amp;nbsp;estable el angulo de apertura como si fuera una camara, el&amp;nbsp;segundo&amp;nbsp;estable la&amp;nbsp;relación&amp;nbsp;de aspecto entre el ancho/alto, veran que hacemos un "cast" con&amp;nbsp;(GLfloat) para calcular el aspecto en caso de que este no se un valor entero, los dos&amp;nbsp;últimos&amp;nbsp;dos&amp;nbsp;parámetros&amp;nbsp;establencen la&amp;nbsp;cercanía&amp;nbsp;y la distancia del eje Z que podemos visualizar, todo aquello que queda fuera de este rango no sera dibujado.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Al final llamamos al modelo vista que se en carga de dibujar en dos&amp;nbsp;dimensiones&amp;nbsp;la imagen calculada en la&amp;nbsp;proyección.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La ultima vez que regresamos al main es para llamar a glutMainLoop() que lo unico que hacer es mantener un ciclo para la funciones hasta que salgamos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glutMainLoop();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;Si acaso queremos dibujar ortograficamente&amp;nbsp;bastaría&amp;nbsp;con cambiar &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;gluPerspective(45.0f, (GLfloat)ancho/(GLfloat)alto, 0.1f, 100.0f);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;por:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;glOrtho((GLfloat)-ancho,&amp;nbsp;(GLfloat)ancho,&amp;nbsp;(GLfloat)-alto, (GLfloat)alto, -10.0, 10.0);&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Los valores serian estos:&lt;/div&gt;&lt;div&gt;glOrtho(izquierda, derecha, arriba, abajo, cerca, lejos);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora bien al hacer esto es posible que veamos a nuestro objeto muy&amp;nbsp;pequeño, el caso es que glOrtho tomo los valores 1.0 como si estos fueran iguales a un pixel, aunque no siempre es el caso. Es por ello que hay que dibujar nuestra tetera mas grande o en todo caso disminuir los valores de glOrtho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ajxHpaPXwFo/TttD-6vAl8I/AAAAAAAAAwE/S9K4hfyfWMw/s1600/02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/-ajxHpaPXwFo/TttD-6vAl8I/AAAAAAAAAwE/S9K4hfyfWMw/s320/02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;Para compilar en linux con gcc desde consola escribir:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ leccion_01.cpp -lglut -lGL -lGLU -o leccion_01&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;div style="color: #134f5c;"&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; line-height: 18px; text-align: justify;"&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Donde:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;g++:&lt;/b&gt;&amp;nbsp;Es el compilador a usar para archivos archivos.cpp y gcc para archivos.c&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;leccion_01.cpp:&amp;nbsp;&lt;/b&gt;Es el archivo a compilar.&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;-lGL -lGLU -lglut:&amp;nbsp;&lt;/b&gt;Son las librerias a utilizar para poder compilar.&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;-o&amp;nbsp;&lt;/b&gt;&lt;b&gt;leccion_01:&amp;nbsp;&lt;/b&gt;Es el nombre del archivo ejecutable.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000; font-size: large;"&gt;Descargar el&amp;nbsp;Código&amp;nbsp;Fuente:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&amp;nbsp;&lt;a href="http://www.mediafire.com/?4bc69xpkxd83x7t"&gt;Leccion_01&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4695544649737251944?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4695544649737251944/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-01-inicializar-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4695544649737251944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4695544649737251944'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-leccion-01-inicializar-una.html' title='OpenGL Lección 01 - Inicializar una Ventana con Glut'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-bqzDRg5Iyuo/TttDxBk99OI/AAAAAAAAAv8/c0RtKj4lLkg/s72-c/01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4439292822560751486</id><published>2011-12-01T18:54:00.001-08:00</published><updated>2011-12-21T19:41:30.252-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>OpenGL Lección 00 - Instalación e Introducción</title><content type='html'>&lt;h3 style="background-color: white; line-height: 20px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;¿&lt;span class="Apple-style-span" style="line-height: normal;"&gt;Que es OPenGL?&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;OPenGL es una&amp;nbsp;librería&amp;nbsp;que permite dibuja objetos en 3D y 2D en tiempo real y que puede ser representado visualmente de manera Ortográficas&amp;nbsp;o en Perspectiva.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como dije OpenGl solo dibuja&amp;nbsp;gráficos, asi que es&amp;nbsp;incapaz&amp;nbsp;de crear ventanas, cargar&amp;nbsp;imágenes, gestionar eventos de&amp;nbsp;ratón&amp;nbsp;o teclado, tampoco puede manejar sonidos, para ello es necesario programar o apoyarse de otras&amp;nbsp;librerías&amp;nbsp;como SDL.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Tipos de datos en OpenGL&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;OpenGL posee su propia&amp;nbsp;definición&amp;nbsp;de datos que permite que se portable hacia diferentes&amp;nbsp;sistemas, por lo que es&amp;nbsp;preferentemente&amp;nbsp;y muy&amp;nbsp;común&amp;nbsp;utilizar este tipos de datos en lugar de los que conocemos en lenguaje C.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xmJPgns1sBM/TthI1alUooI/AAAAAAAAAus/uNPD8OId42g/s1600/tabla.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" src="http://2.bp.blogspot.com/-xmJPgns1sBM/TthI1alUooI/AAAAAAAAAus/uNPD8OId42g/s400/tabla.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Sistema de Coordenadas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El sistemas de coodenadas 3D en OPenGL es el ya conocido Cartesiano, donde el punto (0.0.0), esta ubicado en el centro de la pantalla. El eje X corre de Izquierda(negativo) a derecha(positivos). El eje y va de abajo(negativo) hacia arriba(positivos). Por ultimo el eje Z se&amp;nbsp;adentra&amp;nbsp;hacia la pantalla conviertiendose en&amp;nbsp;números&amp;nbsp;negativos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bqaFi4ISUls/TthSjnDwrEI/AAAAAAAAAu0/w64GheYQdfM/s1600/Coordenadas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-bqaFi4ISUls/TthSjnDwrEI/AAAAAAAAAu0/w64GheYQdfM/s320/Coordenadas.jpg" width="318" /&gt;&lt;/a&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: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Vista&amp;nbsp;Ortográfica&amp;nbsp;y en&amp;nbsp;Perspectiva&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La vista&amp;nbsp;ortográfica&amp;nbsp;sencillamente es aquella en la que los rayos corren paralelas entre si. En otras palabras si se dibuja un objeto no importa la distancia siempre&amp;nbsp;tendrá&amp;nbsp;en mismo&amp;nbsp;tamaño.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La vista modo de perpectiva, es la forma en que nosotros percibimos nuestro mundo, los rayos convergen en un mismo punto llamado "punto de fuga", esta tiene un angulo o campo determinado de&amp;nbsp;visión. Entonces dependiendo la distancia a que nos encontremos del objeto cambiara de&amp;nbsp;tamaño&amp;nbsp;y nosotros&amp;nbsp;percibimos&amp;nbsp;una &amp;nbsp;sensación&amp;nbsp;espacio y volumen, pero el monitor sigue siendo en dos dimensiones (por el momento) entonces dibujamos en un "plano&amp;nbsp;proyección" la imagen compuesta como si&amp;nbsp;tuviera&amp;nbsp;profundidad.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Librerías&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&amp;nbsp;de OPenGL: GL, GLU y glut&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Las&amp;nbsp;librerías&amp;nbsp;de OpenGL estas conformadas por:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;b&gt;gl:&lt;/b&gt; Es la&amp;nbsp;librería&amp;nbsp;principal de OpenGL&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;b&gt;glu:&lt;/b&gt; Es una&amp;nbsp;extensión&amp;nbsp;de OpenGL que contiene mas funciones&amp;nbsp;comúnmente utilizadas&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;b&gt;glut:&lt;/b&gt; Esta libreria no forma tanto parte de OpenGL si no que mas bien se encarga de crear y gestionar ventanas ademas de manejar evento en OpenGL, etc.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Instalación de OPenGL en Linux&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Primero es necesario tener un compilador instalado, en este caso usare gcc, para instarlo escribe en consola como superusuario:&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;apt-get install build-essential&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Y ahora las&amp;nbsp;librerías&amp;nbsp;de OpenGL, posiblemente este mejor dicho&amp;nbsp;instalación&amp;nbsp;de GLUT en linux, ya que al instalar estar esta se instalan las demas. Basta con teclear en una terminal y como supersuario.&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;apt-get install freeglut3-dev&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Esta se encarga de instalar las&amp;nbsp;librerías&amp;nbsp;faltantes de OpenGL, pero si quieres buscarlas aparte una por una entoces estas son las&amp;nbsp;librerías&amp;nbsp;que usa: &amp;nbsp;freeglut3, freeglut3-dev, libgl1-mesa-dev, libglu1-mesa-dev, libxext-dev, libxt-dev. Me parece son todas.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Instalación de OPenGL en Window&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Utilizare Visual C++ 2010 Express como IDE para trabajar con OpenGL y glut.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Una vez mas Windows dispone de su propia implentacion de la&amp;nbsp;librerías&amp;nbsp;de OpenGL, siendo estas opengl32.dll y glu32.dll &amp;nbsp;y que se encuentran ubicadas en&amp;nbsp;C:\Windows\System32, asi que solo vamos a instalar las libreria GLUT. Para ello la pueden descargar de este enlace que le voy a dejar o&amp;nbsp;desde su pagina de OpenGL.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descargar:&lt;/span&gt; &lt;a href="http://www.mediafire.com/?waptz3ojd0j7yh1"&gt;glut-3.7.6-bin&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Pagina Oficial:&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.opengl.org/" style="text-align: -webkit-auto;"&gt;http://www.opengl.org/&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Una vez descargado lo&amp;nbsp;descomprimiré&amp;nbsp;en mi carpeta de documentos, igual puede guardarla donde quieras. La &amp;nbsp;carpeta&amp;nbsp;glut-3.7.6-bin contendra 5 archivos. El archivo llamado glut32.dll tienes que copiarlo y pegarlo dentro de&amp;nbsp;C:\Windows\System32, ahora pasemos a incluirlo en nuestro proyecto.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Comenzaremos creando un proyecto nuevo&amp;nbsp;vació&amp;nbsp;y lo nombraremos como queramos. Nada fuera de lo normal.&amp;nbsp;(Click para ampliar las imagenes).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-o1Yt8PYPIIU/Ttl96RLU0WI/AAAAAAAAAu8/I71R4BgHKLU/s1600/Visual_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-o1Yt8PYPIIU/Ttl96RLU0WI/AAAAAAAAAu8/I71R4BgHKLU/s400/Visual_01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Una vez creado seleccionamos en el&amp;nbsp;menú&amp;nbsp;Proyecto-&amp;gt;Propiedades y aparecera algo&amp;nbsp;así:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zuO4YPXFzvQ/Ttl_mRutGPI/AAAAAAAAAvE/l3iWqBsTo5g/s1600/Visual_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-zuO4YPXFzvQ/Ttl_mRutGPI/AAAAAAAAAvE/l3iWqBsTo5g/s400/Visual_02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Seleccionamos VC++ Directorios y luego picamos en Include Directories o "Archivos de Inclusion", aparece una&amp;nbsp;pequeña&amp;nbsp;flecha en la izquierda picamos en ella y se desplegara un&amp;nbsp;pequeño&amp;nbsp;menu con la&amp;nbsp;opción&amp;nbsp;&amp;lt;Edit&amp;gt;, picamos en ella y aparece &amp;nbsp;un nueva ventana.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wOPb6XKwiVg/TtmC0Ts-h9I/AAAAAAAAAvM/OYeFXL02rtY/s1600/Visual_03.jpg" imageanchor="1"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-wOPb6XKwiVg/TtmC0Ts-h9I/AAAAAAAAAvM/OYeFXL02rtY/s320/Visual_03.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Ahora clickeamos en la icono de la carpeta para agregar un archivo de&amp;nbsp;inclusión&amp;nbsp;y abajo aparece un&amp;nbsp;pequeño&amp;nbsp;boton con tres punto&amp;nbsp;suspensivos lo seleccionamos y en la nueva ventana que aparece seleccionamos la carpeta donde tenemos nuestra carpeta&amp;nbsp;glut-3.7.6-bin.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_3_T1cdSuDU/TtmEVJ-WmwI/AAAAAAAAAvU/Ht58vkjLihk/s1600/Visual_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-_3_T1cdSuDU/TtmEVJ-WmwI/AAAAAAAAAvU/Ht58vkjLihk/s400/Visual_04.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Ahora hay que agregar la libreria de glut,&amp;nbsp;seleccionamos&amp;nbsp; "Library Directories" y el procedimiento es el mismo que el anterior.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lP-SXLIMI78/TtmGMK40sKI/AAAAAAAAAvc/KqeamRQ-kPo/s1600/Visual_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-lP-SXLIMI78/TtmGMK40sKI/AAAAAAAAAvc/KqeamRQ-kPo/s400/Visual_05.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Solo nos falta linkear las&amp;nbsp;librerías&amp;nbsp;para poder compilarlo, en la misma venta de propiedades&amp;nbsp;seleccionamos&amp;nbsp;del&amp;nbsp;menú&amp;nbsp;izquierdo&amp;nbsp;la&amp;nbsp;opción&amp;nbsp;de "Linker" y &amp;nbsp;luego en la lista que&amp;nbsp;aparecerá&amp;nbsp; a la derecha clickeamos en "Additional Dependecies".&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--WVd9_TGBZg/TtmH0vNaAfI/AAAAAAAAAvk/HQoIoySnrHk/s1600/Visual_06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/--WVd9_TGBZg/TtmH0vNaAfI/AAAAAAAAAvk/HQoIoySnrHk/s400/Visual_06.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;En la nueva venta que&amp;nbsp;aparecerá&amp;nbsp;hay que agregar las&amp;nbsp;librerías&amp;nbsp;de OpenGL y GLUT escribiendo:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;opengl32.lib&lt;br /&gt;glu32.lib&lt;br /&gt;glut32.lib&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9MsNlzoRj6Y/TtmJFsojYoI/AAAAAAAAAvs/-IMgGEWla-Q/s1600/Visual_07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-9MsNlzoRj6Y/TtmJFsojYoI/AAAAAAAAAvs/-IMgGEWla-Q/s400/Visual_07.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para finalizar solo hay darle aceptar a todo&amp;nbsp;así&amp;nbsp;terminamos de agregar&amp;nbsp;y linkear las&amp;nbsp;librerías&amp;nbsp;necesaria para comenzar a programar con OpenGL y C\C++.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-DWs48BsbL-Q/TtmPzE-K2hI/AAAAAAAAAv0/kfRbODZ5QbA/s1600/Visual_08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-DWs48BsbL-Q/TtmPzE-K2hI/AAAAAAAAAv0/kfRbODZ5QbA/s400/Visual_08.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ahora solo queda crear un nuevo archivo y solo&amp;nbsp;bastaría&amp;nbsp;con incluir la biblioteca "glut.h", en el siguiente post explicare un primer ejemplo de OpenGL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4439292822560751486?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4439292822560751486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-introduccion-00.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4439292822560751486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4439292822560751486'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/12/opengl-introduccion-00.html' title='OpenGL Lección 00 - Instalación e Introducción'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xmJPgns1sBM/TthI1alUooI/AAAAAAAAAus/uNPD8OId42g/s72-c/tabla.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-2995222730926754261</id><published>2011-11-30T00:28:00.001-08:00</published><updated>2011-12-06T20:24:52.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='Demos'/><title type='text'>Magic Ball</title><content type='html'>&lt;div style="text-align: justify;"&gt;Seguramente conocen las&amp;nbsp;clásicas "Magic ball" a las que les formulas una pregunta y esta te da una respuesta, bueno les dejo una programe como applet&amp;nbsp;disfrútenla,&amp;nbsp;también&amp;nbsp;la pueden descargar abajo dejo los enlaces.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wsGOJzZ1is8/Tt7ptkEfZAI/AAAAAAAAAw8/nME1JXn9jSY/s1600/magicball.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://2.bp.blogspot.com/-wsGOJzZ1is8/Tt7ptkEfZAI/AAAAAAAAAw8/nME1JXn9jSY/s320/magicball.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;applet archive="MagicBall.jar" code="magica.App.class" codebase="http://dl.dropbox.com/u/5894824/MagicBall/" height="460" title="Java" width="480"&gt;Problems&lt;/applet&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Esta versión es para poder ejecutarse directamente en el navegador como una applet.&amp;nbsp;A diferencia de la&amp;nbsp;versión&amp;nbsp;descargable,&amp;nbsp;aun falta cosas por hacer.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Poner la pantalla de&amp;nbsp;presentación.&lt;/li&gt;&lt;li&gt;Falta agregar el sonido.&lt;/li&gt;&lt;li&gt;La transparencias al aparecer.&lt;/li&gt;&lt;li&gt;Mantenerse la Magic Ball dentro de pantalla.&lt;/li&gt;&lt;/ol&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/9deyuN-68ZI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9deyuN-68ZI?version=3&amp;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/9deyuN-68ZI?version=3&amp;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&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga:&lt;/span&gt; &lt;a href="http://www.mediafire.com/?ha1ewa6c17z885r"&gt;Magic Ball 0.1 - Windows&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga:&lt;/span&gt; &lt;a href="http://www.mediafire.com/?z1o46npa81k33k0"&gt;Magic Ball 0.1 - Linux&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-2995222730926754261?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/2995222730926754261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/11/magic-ball.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2995222730926754261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2995222730926754261'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/11/magic-ball.html' title='Magic Ball'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-wsGOJzZ1is8/Tt7ptkEfZAI/AAAAAAAAAw8/nME1JXn9jSY/s72-c/magicball.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-3648080376864245658</id><published>2011-11-01T00:22:00.000-07:00</published><updated>2011-12-01T21:18:23.377-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='Recursos y Herramientas'/><title type='text'>Desarollo de Personaje de un Videojuego.</title><content type='html'>&lt;div style="text-align: justify;"&gt;Hace unas semanas&amp;nbsp;asistí&amp;nbsp;una&amp;nbsp;convención&amp;nbsp;de videojuegos en la cual se expusieron varios temas relacionados al mundo de los videojuegos, entre ellos se presento como&amp;nbsp;desarrollar&amp;nbsp;personajes e historias, me&amp;nbsp;pareció&amp;nbsp;sencillas e intersantes, el nombre del expositor lo he olvidado, es una lastima. Por el momento describiré una forma de como desarrollar personajes.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Desarrollo&amp;nbsp;de Personajes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;No hace mucho un cuate japones se invento un método para desarrollar personajes fácil y rápidamente para videojuegos el cual consiste en tres pasos&amp;nbsp;básico.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1- Matrices de Personajes.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Si ustedes estudian ingeniería posiblemente sepan que es una matriz, para los que no tengan ni idea simplemente es una cuadricula. Este método es muy utilizado para los RPG, véase Pokemon. De un lado de la cuadricula renglones simplemente apuntamos atributos, razas, lineamentos o cualquier que se les ocurra, igual del lado la columnas empezamos a anotar cosas pertenecientes a un genero. Entonces una vez terminado hay que empezar a realizar posible combinaciones que puedan resultar buenas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-b7_sk2DvSNM/Tq-c_pAbotI/AAAAAAAAArw/sQXDNzzV8r4/s1600/hoja1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-b7_sk2DvSNM/Tq-c_pAbotI/AAAAAAAAArw/sQXDNzzV8r4/s320/hoja1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como ven en la parte de arriba ya he empezado a realizar mi propia matriz de personajes y marcado los que me parecen pueden funcionar, se puede empezar a desvariar y conseguir muy raras combinaciones, no todas funcionan. Por ejemplo Hombre +&amp;nbsp;Bombón&amp;nbsp;= Hombre de&amp;nbsp;Malvavisco&amp;nbsp;de los Cazafantasma. Pero... Vampiro + Bombón... mmm, yo que se. Incluso se puede combinar con mas matrices para agregar mas cosas a nuestro personaje.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2- Apariencia del Persona&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Después de haber hecho una posible combinacion ahora es el momento de definir el cuerpo. Este cuate japones también se dio cuenta que el cuerpo se puede dividir en cinco partes principales: Cabeza, brazo izquierdo, brazo derecho, torso y piernas. Siendo la cabeza mas importante por el rostro al que también se le pueden añadir rasgos. Aquí voy a empezar a exagerar y desvariar un poco con mi personaje solo como ejemplo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-x3i6AfOSRWE/Tq-dK16YlMI/AAAAAAAAAr4/lSECitp9zMA/s1600/hoja2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-x3i6AfOSRWE/Tq-dK16YlMI/AAAAAAAAAr4/lSECitp9zMA/s320/hoja2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3- Virtudes y Desventajas&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bueno llegamos a la parte que hace que nuestro héroe o villano se entrañable. Como personaje tiene un motivo que lo mueve a hacer lo que hace, pondré un ejemplo sencillo y claro. Superman lucha por la justicia, pff que nono. Además de que es super fuerte... pff que chafa, nadie le gana. Si no fuera por la Criptonita o Luisa Lane Superman seria un personaje muy plano y nos aburría (A mi me aburre de todas maneras). Para ello nuestro personaje debe poseer virtudes y desvirtudes, Atributos y Debilidades. Para ello creamos un simple dibujo donde ponemos por cada ventaja y de lado contrario una desventaja. Si tienes poderes de fuego entonces es débil contra el agua. O por ejemplo si tiene virtudes como que es buen padre, pero su desvirtud es que traiciona a su esposa, etc.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-09U559lcB_Q/Tq-dWl7myVI/AAAAAAAAAsA/19o45V1Z750/s1600/hoja3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://4.bp.blogspot.com/-09U559lcB_Q/Tq-dWl7myVI/AAAAAAAAAsA/19o45V1Z750/s320/hoja3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como vemos este método es muy sencillo pero te puede ayudar bastante, tampoco tiene que ser así siempre esto solo es una idea de como puedes desarrollar un personaje. Claro tu puedes pulirlo mas a fondo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kZtgUeqLolM/Tq-drNLxvsI/AAAAAAAAAsI/XfzFVVZkPnU/s1600/Vampiro+pulpo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-kZtgUeqLolM/Tq-drNLxvsI/AAAAAAAAAsI/XfzFVVZkPnU/s320/Vampiro+pulpo.jpg" width="319" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-3648080376864245658?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/3648080376864245658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/11/desarollo-de-personaje-de-un-videojuego.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3648080376864245658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3648080376864245658'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/11/desarollo-de-personaje-de-un-videojuego.html' title='Desarollo de Personaje de un Videojuego.'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-b7_sk2DvSNM/Tq-c_pAbotI/AAAAAAAAArw/sQXDNzzV8r4/s72-c/hoja1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-5902875039041108588</id><published>2011-10-15T11:42:00.000-07:00</published><updated>2011-12-03T20:56:31.872-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='Demos'/><title type='text'>Muerte Escalofriante - Demo 0.1</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;Muerte Escalofriante es una demo que programe para participar el evento de "Temporada de patos 8". Soy&amp;nbsp;nostálgico&amp;nbsp;del snes&amp;nbsp;así&amp;nbsp;que conserva ese estilo. Abajo dejo un link para descargar el compilado.&lt;br /&gt;&lt;br /&gt;Recién&amp;nbsp;me acabo de enterar gane en "Mejor&amp;nbsp;Presentación" en el concurso de&amp;nbsp;desarrollo&amp;nbsp;de videojuegos en "Temporada de Patos 8". :O Me siento tan honrado ToT.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HR1mLyeqe9A/TpnVPqsg7YI/AAAAAAAAAoc/xmn_p9fztCo/s1600/01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-HR1mLyeqe9A/TpnVPqsg7YI/AAAAAAAAAoc/xmn_p9fztCo/s1600/01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Les dejo un&amp;nbsp;vídeo&amp;nbsp;con el demo del juego, tuve problemas con el audio&amp;nbsp;así&amp;nbsp;que no pude grabarlo, pero el archivo del juego contiene la música y sonido.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&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/LbdY_y5_XfM/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LbdY_y5_XfM?version=3&amp;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/LbdY_y5_XfM?version=3&amp;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;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Por el momento solo tengo compilado en Linux, mas adelante lo pondré también compilado para Windows.&amp;nbsp;También&amp;nbsp;me he dado cuenta de dos Bugs en el juego pero por cuestiones de tiempo de entrega del proyecto no alcance a corregirlos y&amp;nbsp;así&amp;nbsp;los deje :p.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Los controles son:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Flecha Izquierda:&lt;/b&gt; Moverse a la izquierda.&lt;br /&gt;&lt;b&gt;Flecha Derecha:&lt;/b&gt;&amp;nbsp;Moverse a la Derecha.&lt;br /&gt;&lt;b&gt;Z:&lt;/b&gt; Disparo.&lt;br /&gt;&lt;b&gt;X:&lt;/b&gt; Brinco.&lt;br /&gt;&lt;b&gt;Enter:&lt;/b&gt; Continuar.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000; font-size: large;"&gt;Descarga el Demo:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Linux:&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.mediafire.com/?ik3ghmkotfo8k74"&gt;Muerte Escalofriante 0.1&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;También&amp;nbsp;dejo el&amp;nbsp;código&amp;nbsp;fuente. Es el primer juego que hago&amp;nbsp;así&amp;nbsp;que el&amp;nbsp;código&amp;nbsp;no es muy bueno, pero tal vez les sirva para aprender.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Código&amp;nbsp;Fuente: &lt;/span&gt;&lt;a href="http://www.mediafire.com/?juzd2kyjwi8di2i"&gt;Muerte&amp;nbsp;Escalofriante&amp;nbsp;0.1&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-5902875039041108588?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/5902875039041108588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/10/muerte-escalofriante-demo-01.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5902875039041108588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/5902875039041108588'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/10/muerte-escalofriante-demo-01.html' title='Muerte Escalofriante - Demo 0.1'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-HR1mLyeqe9A/TpnVPqsg7YI/AAAAAAAAAoc/xmn_p9fztCo/s72-c/01.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-1319372074636788003</id><published>2011-10-11T01:16:00.000-07:00</published><updated>2012-01-10T01:10:07.542-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Recursos y Herramientas'/><title type='text'>Midis en Linux y Windows</title><content type='html'>&lt;div style="text-align: justify;"&gt;Los midis (.mid) son aquellos&amp;nbsp;pequeños&amp;nbsp;archivos de&amp;nbsp;música que permiten ser escuchados mediante un sintetizador en la computadora, mucho lo usan para aprenderse la&amp;nbsp;música&amp;nbsp;de sus videojuegos o grupos favoritos y&amp;nbsp;aquí&amp;nbsp;les presento dos programas gratuitos una para Windows y el otro para Linux.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;VanBasco's Karaoke Player&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ya algo viejo pero uno de mis favorito es vanBasco, aunque solo esta para windows xp, no se si funcione en Windows 7. Posee una gran&amp;nbsp;interfaz&amp;nbsp;muy intuitiva, puede mostrar karaoke si el midi lo incluye, ademas de mostrar varios canales de&amp;nbsp;reproducción&amp;nbsp;y un teclado.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6lkoky8g-rM/TpPzFtAKd1I/AAAAAAAAAoM/JZy5mkjNeEc/s1600/vanbasco_kl.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://1.bp.blogspot.com/-6lkoky8g-rM/TpPzFtAKd1I/AAAAAAAAAoM/JZy5mkjNeEc/s320/vanbasco_kl.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Pagina Oficial&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.vanbasco.com/"&gt;http://www.vanbasco.com/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Timidity&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;En linux se encuentra timidity que permite reproducir sonido midi. Aunque a decir verdad le falta&amp;nbsp;reproducir&amp;nbsp;algunos&amp;nbsp;instrumentos, para ello es necesario instalar un fuentes de sonido extras algo pesadas de descargar, pero&amp;nbsp;después&amp;nbsp;de eso funciona a las mil maravillas.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Para&amp;nbsp;instalar&amp;nbsp;timidy y fuentes de sonido extras teclea en consola como superusuario:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;apt-get install timidity fluid-soundfont-gm fluid-soundfont-gs&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Una vez instalado tenemos que configurar algo muy simple para poder verlos, hay que&amp;nbsp;seleccionar&amp;nbsp;cualquier archivo midi que tenga y con el&amp;nbsp;botón&amp;nbsp;derecho dale click, selecciona &amp;nbsp;"propiedades", una vez abierta las propiedades busca la&amp;nbsp;pestaña&amp;nbsp;"abrir con", presiona&amp;nbsp;añadir, en la nueva ventana que se&amp;nbsp;abrirá&amp;nbsp;escribe en "añadir&amp;nbsp;un comando personalizado":&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;timidity -iat&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;Y presionas&amp;nbsp;añadir, listo cada vez que les des click a&amp;nbsp;algún&amp;nbsp;archivo tipo .mid se&amp;nbsp;abrirá&amp;nbsp;la interfaz de timidity junto con la&amp;nbsp;visualización&amp;nbsp;de teclado.&lt;br /&gt;&lt;br /&gt;Lo&amp;nbsp;único&amp;nbsp;que falta es editar el archivo que esta en /etc/timity/timidity.cfg y quitar las&amp;nbsp;almohadillas&amp;nbsp; forma que quede&amp;nbsp;así:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;# By default, try to use the instrument patches from freepats:&lt;br /&gt;#source /etc/timidity/freepats.cfg&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;# alternatively, you can use the fluid-soundfont:&lt;br /&gt;source /etc/timidity/fluidr3_gm.cfg&lt;br /&gt;source /etc/timidity/fluidr3_gs.cfg&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NDhUj7IbuFE/TpP5i9u46XI/AAAAAAAAAoU/sgfQYOnE9og/s1600/timidy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-NDhUj7IbuFE/TpP5i9u46XI/AAAAAAAAAoU/sgfQYOnE9og/s400/timidy.png" width="376" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Algunas opciones de interfaces con el teclado:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P:&lt;/b&gt; Reproducir.&lt;br /&gt;&lt;b&gt;F:&lt;/b&gt; Adelantar 10 seg.&lt;br /&gt;&lt;b&gt;B:&lt;/b&gt;&amp;nbsp;Atrasar&amp;nbsp;10 seg.&lt;br /&gt;&lt;b&gt;&amp;lt;:&lt;/b&gt; Disminuyes Tiempo&lt;br /&gt;&lt;b&gt;&amp;gt;:&lt;/b&gt; Aumentas Tiempo&lt;br /&gt;&lt;b&gt;+:&lt;/b&gt; Subir Volumen&lt;br /&gt;&lt;b&gt;-:&lt;/b&gt; Bajar Volumen&lt;br /&gt;&lt;b&gt;Barra Espaciadora: &lt;/b&gt;Pausa y reproduces&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-1319372074636788003?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/1319372074636788003/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/10/midis-en-linux-y-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/1319372074636788003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/1319372074636788003'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/10/midis-en-linux-y-windows.html' title='Midis en Linux y Windows'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-6lkoky8g-rM/TpPzFtAKd1I/AAAAAAAAAoM/JZy5mkjNeEc/s72-c/vanbasco_kl.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-1249040321346048369</id><published>2011-10-03T03:51:00.000-07:00</published><updated>2011-12-05T22:05:27.738-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 06 - Música y Sonido</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Bienvenido a este sexto tutorial sobre SDL, en este breve post tratare sobre como reproducir audio en el &amp;nbsp;videojuego, para ello re-tomare el&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;a href="http://isakishi.blogspot.com/2011/09/sdl-leccion-05-colisiones.html"&gt;ejemplo anterior&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;a la que simplemente he agregado algunos archivos de sonido para reproducirlos. Este código lo he compilado en Linux y Windows y funciona perfectamente.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar las cabeceras "SDL/SDL.h" por "SDL.h" etc.&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;El&amp;nbsp;código&amp;nbsp;que agregare se encuentra dentro del archivo leccion_06.cpp y solo resaltare los cambios con rojo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;SDL es capaz de manejar su propio audio pero existe una libreria llama SDL_mixer.h que no facilita mas las cosas a la hora de&amp;nbsp;agregar&amp;nbsp;audio.&amp;nbsp;Así&amp;nbsp;que lo primero que hay que hacer es mandar a llamar esa libreria.&amp;nbsp;Verán que el proceso es muy similar al de cargar&amp;nbsp;imágenes. No olvides que ahora&amp;nbsp;también&amp;nbsp;tendras que enlazar la&amp;nbsp;librería nueva (Si esta en linux o windows y compilas&amp;nbsp;tendrás&amp;nbsp;que indicarselo agregando -lSDL_mixer).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;//Archivo leccion_06.cpp&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;#include "SDL/SDL_mixer.h"&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "tiempo.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "colision.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "personaje.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Tiempo Tiempo;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Personaje Personaje;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Event evento;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *pantalla = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *imagen = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Luego al igual que las&amp;nbsp;imágenes&amp;nbsp;hay que crear una apuntador a la nueva variable que se encarga de manejar&amp;nbsp;música&amp;nbsp;y sonido. Una cosa importante es que la&amp;nbsp;música&amp;nbsp;es llamada por medio de&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Mix_Music y el sonido, por ejemplo un golpe o un disparo se llama mediante Mix_Chunk.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Creamos&amp;nbsp;nuestras&amp;nbsp;variables apuntadas para la&amp;nbsp;música&amp;nbsp;y el sonido&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;Mix_Music *musica;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;Mix_Chunk *choque_pared;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Rect caja1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Rect caja2;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void choques(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja1.x = 240;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja1.y = 90;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja1.w = 30;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja1.h = 30;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja2.x = 90;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja2.y = 180;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja2.w = 60;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;caja2.h = 60;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if(colision(Personaje.caja(), caja1)){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if(Personaje.direccion == PERS_DER){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.x_persPos -= PERS_AVANZA;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.tecla[SDLK_RIGHT] = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else if(Personaje.direccion == PERS_IZQ){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.x_persPos += PERS_AVANZA;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.tecla[SDLK_LEFT] = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else if(Personaje.direccion == PERS_ARR){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.y_persPos += PERS_AVANZA;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.tecla[SDLK_UP] = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else if(Personaje.direccion == PERS_ABA){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.y_persPos -= PERS_AVANZA;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.tecla[SDLK_DOWN] = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Mix_PlayChannel(-1, choque_pared, 0);&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;printf("El personaje colisiono\n");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Cuando ocurra una colison mandare a llamar el sonido a reproducir, la forma es mediante la&amp;nbsp;función&amp;nbsp;Mix_PlayChannel(), el primer valor indica el numero de canales a usar, con el valor -1 SDL se encarga de seleccionar los canales a reproducir, luego esta el nombre de la variable que queremos reproducir, y por ultimo el valor 0 que indica que el sonido se reproducida una sola vez, igual hacemos para la segunda caja. Tal vez se una buena idea incluir algunos mensajes con printf() para saber lo que esta ocurriendo y ver si se lleva a acabo la&amp;nbsp;acción.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Archivo leccion_06.cpp&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;int main(int arc, char* args[]){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Init(SDL_INIT_EVERYTHING);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pantalla = SDL_SetVideoMode(360, 240, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;//Iniciar los parametros del audio&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_WM_SetCaption("Leccion 06 - Sonido",NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;imagen = IMG_Load ("mapa.png");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.clips();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;En el main se tiene que mandar a llamar a la funcion Mix_OpenAudio para poder reproducir audio, es importante recordar antes haber activado SDL_INIT_AUDIO en toda caso ya lo hicimos con SDL_INIT_EVERYTHIG, los&amp;nbsp;parámetros&amp;nbsp;de Mix_OpenAudio(frecuencia, formato, canales, chunksize ), la frecuencia&amp;nbsp;puede&amp;nbsp;ser 11025, 22050, 44100, sobre el formato existen varios, pero si no quieren complicarse&amp;nbsp;déjenlo&amp;nbsp;en MIX_DEFAULT_FORMAT, el canal; si es valor 1 es sonido mono y 2 es sonido estereo, y el chunkside habitualmente lo dejan en 4096.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;//Cargar archivos de audio para la&amp;nbsp;Música&amp;nbsp;y el Sonido&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;musica = Mix_LoadMUS("musica.mp3");&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;choque_pared = Mix_LoadWAV("choque.wav");&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Igual que con las&amp;nbsp;imágenes&amp;nbsp;le indicamos a las variables que archivos hay que cargar, como dije antes Mix_LoadMUS se encargara de carga la&amp;nbsp;música, y MixLoadWAV los archivos que se usaran como samples para los sonidos.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;//Control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;while(1){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; Tiempo.inicio_Ticks();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;   &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;if(Mix_PlayingMusic() == 0 ){&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(Mix_PlayMusic(musica, -1) == -1){&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;             &lt;/span&gt;return 1;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;         &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Para reproducir la&amp;nbsp;música&amp;nbsp;se utiliza Mix_PlayMusic() , lo primero que hacemos es comprobar si se esta reproduciendo&amp;nbsp;música, en caso que no&amp;nbsp;entonces&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Mix_PlayMusic() comenzara a reproducirla,&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp;los&amp;nbsp;parámetros&amp;nbsp;son el nombre de la variable en este caso&amp;nbsp;música&amp;nbsp;y el valor -1 indica que se&amp;nbsp;reproducirá&amp;nbsp;indefinidamente.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;while(SDL_PollEvent(&amp;amp;evento)){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;if(evento.type == SDL_QUIT){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;         &lt;/span&gt;return 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; Personaje.eventos();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; white-space: pre;"&gt;  &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;choques();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; Personaje.animacion();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Personaje.dibuja();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if(Tiempo.transc_Ticks() &amp;lt; MILISEGUNDOS){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;SDL_Delay(MILISEGUNDOS - Tiempo.transc_Ticks());&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;SDL_Flip(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;} &amp;nbsp;&amp;nbsp;&lt;b&gt;//Fin del control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.limpiar();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//Libera los archivos de audio&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Mix_FreeMusic(musica);&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Mix_FreeChunk(choque_pared);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;//Cierra el audio&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Mix_CloseAudio();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; return 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Ya por ultimo hay que liberar los archivos de sonido y cerrar la&amp;nbsp;librería&amp;nbsp;de SDL_mixer.h&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;b&gt;Anexo:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;En linux si compilas usando el compilador gcc es necesario indicarle todos los archivos y&amp;nbsp;librerías&amp;nbsp;a &amp;nbsp;utilizar, creando un makefile simplificaria las cosas, pero por el momento simplemente lo compilare desde consola.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Primero creare los&amp;nbsp;módulos&amp;nbsp;con:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -c leccion_06.cpp personaje.cpp tiempo.cpp colision.cpp&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Y luego enlazare los modulos con:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -o leccion_06 -lSDL -lSDL_image &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;-lSDL_mixer&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; leccion_06.o personaje.o tiempo.o colision.o&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Y para ejecutarlo solo basta darle doble click al ejecutable o escribir en consola:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;./leccion_06&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descargar el&amp;nbsp;código&amp;nbsp;fuente: &lt;/span&gt;&lt;a href="http://www.mediafire.com/?365chv61i074rx2"&gt;Leccion_06&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-1249040321346048369?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/1249040321346048369/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/10/sdl-leccion-05-audio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/1249040321346048369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/1249040321346048369'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/10/sdl-leccion-05-audio.html' title='SDL Lección 06 - Música y Sonido'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-2976477474857476092</id><published>2011-09-17T00:44:00.000-07:00</published><updated>2011-12-05T21:30:04.644-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 05 - Colisiones</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Bienvenido a este quinto tutorial sobre SDL, en este breve post tratare sobre las colisiones entre personajes y algunos objetos del videojuego, para ello re-tomare el&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;a href="http://isakishi.blogspot.com/2011/09/sdl-leccion-04-animacion.html"&gt;ejemplo anterior&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;a la que&amp;nbsp;agregue una&amp;nbsp;función&amp;nbsp;que se encargara de las colisiones, pero esta vez solo trabaje con la clase personaje y parte del main. Este código lo he compilado en Linux y Windows y funciona perfectamente.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar&amp;nbsp;las cabeceras&amp;nbsp;"SDL/SDL.h" por "SDL.h" etc.&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="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/yGEfWKVSauc/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yGEfWKVSauc?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/yGEfWKVSauc?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 style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Irónicamente&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;el fantasma deberia&amp;nbsp;atravesar paredes, pero como tengo flojera de dibuja otra cosa&amp;nbsp;simplemente&amp;nbsp;lo utilizare para mostrar como se lleva a cabo una&amp;nbsp;colisión.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Comenzare por definir el archivo de cabecera para la&amp;nbsp;función&amp;nbsp;colisión.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Archivo de Cabecera colision.h&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#ifndef _COLISION_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#define _COLISION_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;bool colision(SDL_Rect, SDL_Rect);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Como ven la&amp;nbsp;función&amp;nbsp;bool colision(SDL_Rect, SDL_Rect); simplemente se encarga de recibir dos&amp;nbsp;parámetros, para verificar colisones&amp;nbsp;&lt;/span&gt;entre dos "cajas", han de recordar que SDL_Rect es una estructura que maneja puede manejar cuatro miembros:&amp;nbsp;posición&amp;nbsp;en x,&amp;nbsp;posición&amp;nbsp;en y, ancho y alto.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Ahora pasemos al&amp;nbsp;método&amp;nbsp;de la&amp;nbsp;función&amp;nbsp;colisión.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Archivo colision.cpp&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "colision.h"&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;bool colision(SDL_Rect a, SDL_Rect b){&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;//Rectangulo a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int izq_a = a.x;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int der_a = a.x + a.w;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int arr_a = a.y;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int aba_a = a.y + a.h;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;//Rectangulo b&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int izq_b = b.x;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int der_b = b.x + b.w;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int arr_b = b.y;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;int aba_b = b.y + b.h;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;if(aba_a &amp;lt;= arr_b || arr_a &amp;gt;= aba_b || der_a &amp;lt;= izq_b || izq_a &amp;gt;= der_b){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;else{&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Como pueden ver declaramos cuatro variables para cada una de los&amp;nbsp;parámetros&amp;nbsp;pasados.&amp;nbsp;Por ejemplo: el lado&amp;nbsp;izquierdo&amp;nbsp;de la primera caja es igual a su misma&amp;nbsp;posición&amp;nbsp;en x, entonces para obtener el ancho de la caja hay que tomar su&amp;nbsp;posición&amp;nbsp;en x y simplemente sumarle el ancho que tiene.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Después&amp;nbsp;de haberle&amp;nbsp;asignado&amp;nbsp;lo valores hay que comprobar si cada lado de las dos cajas no chocan, por ejemplo si el lado derecho de la caja "a" es menor al lado&amp;nbsp;izquierdo&amp;nbsp;de "b" significa que no existe&amp;nbsp;colisión, entones devuelve un falso, de los contrario&amp;nbsp;devolverá un valor verdadero.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;a href="http://2.bp.blogspot.com/-IlHb_cog4qw/TnQ32Njj_fI/AAAAAAAAAng/fqUqHDWk_LQ/s1600/colision+a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://2.bp.blogspot.com/-IlHb_cog4qw/TnQ32Njj_fI/AAAAAAAAAng/fqUqHDWk_LQ/s320/colision+a.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Ahora es necesario definir las cajas del personaje y de los&amp;nbsp;obstáculos utilizando los archivos que ya tengo de los ejemplos anteriores. También&amp;nbsp;he agregado mas teclas de movimiento para que el personaje se pueda desplazar hacia arriba y hacia abajo, no lo explico pero no tiene mayor&amp;nbsp;complicación&amp;nbsp;que moverse de izquierda a derecha como &lt;a href="http://isakishi.blogspot.com/2011/08/sdl-leccion-02-movimiento.html"&gt;mostre&amp;nbsp;anteriormente.&lt;/a&gt;&amp;nbsp;Ademas de&amp;nbsp;también&amp;nbsp;re-utilize los mismo clips de izquierda y derecha para no tener que dibujar los clip de van hacia arriba y hacia abajo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Dentro del la&amp;nbsp;definición&amp;nbsp;personaje simplemente he hecho tres cosas: agregar una estructura SDL_Rect pers_caja, que sera la encargada de contener la caja, una&amp;nbsp;función&amp;nbsp;SDL_Rect caja() se encarga de devolver el valor SDL_Rect y por ultimo simplemente&amp;nbsp;moví&amp;nbsp;a la clase publica&amp;nbsp;Uint8 *tecla, que estaba ubicado en la&amp;nbsp;función&amp;nbsp;eventos();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//personaje.h&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;class Personaje{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;private:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;SDL_Surface *personaje;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SDL_Rect persIzqClip[4];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SDL_Rect persDerClip[4];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt; SDL_Rect pers_caja;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int frame;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; bool animar;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;public:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Personaje();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int x_persPos, y_persPos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int direccion;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;Uint8 *tecla;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;SDL_Rect caja();&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void clips();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void eventos();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;A&amp;nbsp;continuación&amp;nbsp;muestro la nueva funcion caja(), como pueden ver para ubicar la caja de&amp;nbsp;colisión&amp;nbsp;es necesario toma el valor de la posicion de personaje "x_persPos" y se la asignarla a la caja pers_caja.x y haci continuamos con los cuatro&amp;nbsp;parámetros. &amp;nbsp;Si quieres crear una caja mas&amp;nbsp;pequeña o ubicarla en alguna parte distinta&amp;nbsp;bastaría&amp;nbsp;con solo sumar o restar con respecto a su&amp;nbsp;posición&amp;nbsp;o anchura del personaje.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//personaje.cpp&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Rect Personaje::caja(){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pers_caja.x = x_persPos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pers_caja.y = y_persPos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pers_caja.w = PERS_ANCHO;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pers_caja.h = PERS_ALTO;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;return pers_caja;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Para las&amp;nbsp;colisiones&amp;nbsp;que&amp;nbsp;definí&amp;nbsp;es necesario tener al menos tener dos cajas para&amp;nbsp;compáralas, una tiene que ser del personaje y otra puede ser un enemigo, en este caso pondre dos&amp;nbsp;obstáculos&amp;nbsp;con los cuales chocara. Los&amp;nbsp;definiré&amp;nbsp;dentro del archivo leccion_05.cpp para evitar que tener hacer otro archivo, pero tal vez lo mas conveniente sea&amp;nbsp;separarlo.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Agrego el nuevo archivo de cabecera para las colisione y mas abajo declaro dos variables del tipo SDL_Rect los cuales&amp;nbsp;serán&amp;nbsp;los&amp;nbsp;obstáculos&amp;nbsp;y de acuerdo a su&amp;nbsp;ubicación&amp;nbsp;en el dibujo que tengo hecho y les asigno los valores para sus dimensiones.&amp;nbsp;La&amp;nbsp;función&amp;nbsp;choques() contendra el llamado a las cajas a comparar para la colisiones.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//leccion_05.cpp archivo del main&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "tiempo.h"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;#include "colision.h"&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "personaje.h"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Rect caja1;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Rect caja2;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void choques(){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja1.x = 240;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja1.y = 90;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja1.w = 30;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja1.h = 30;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja2.x = 90;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja2.y = 180;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja2.w = 60;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;caja2.h = 60;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;if(colision(Personaje.caja(), caja1)){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if(Personaje.direccion == PERS_DER){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Personaje.x_persPos -= PERS_AVANZA;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Personaje.tecla[SDLK_RIGHT] = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if(Personaje.direccion == PERS_IZQ){&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Personaje.x_persPos += PERS_AVANZA;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Personaje.tecla[SDLK_LEFT] = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;En el&amp;nbsp;código&amp;nbsp;de arriba pueden observar que llamo a la nueva función&amp;nbsp;colisión() y llamo a una de las dos cajas y que quiero que compare, en este caso Personaje.caja() y caja1. (Recordar que Personaje.caja() retorna un valor de tipo SDL_Rect).&amp;nbsp;Después&amp;nbsp;de ello hay que indicarle que es lo que queremos que haga cuando ocurra la&amp;nbsp;colisión, en este caso&amp;nbsp;contrarresta&amp;nbsp;el avanze,&amp;nbsp;desincrementado&amp;nbsp;el valor o incrementado el valor de la&amp;nbsp;posición&amp;nbsp;según&amp;nbsp;sea el caso, ya por ultimo hago que el valor de presionar la tecla sea falso, todo esto depende de lo que queramos hacer dentro de&amp;nbsp;nuestra&amp;nbsp;condicion de&amp;nbsp;colisión.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Por ultimo agrego la&amp;nbsp;función choques()&amp;nbsp;dentro del bucle del juego.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;/b&gt;Personaje.eventos();&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp;&lt;b&gt; &amp;nbsp;//Llamamos a las colisiones dentro del bucle&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;choques();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;Personaje.dibuja();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Básicamente&amp;nbsp;esta es una manera de como se pueden llevar a cabo las&amp;nbsp;colisiones&amp;nbsp;entre un personaje y&amp;nbsp;algún&amp;nbsp;objeto como una pared o enemigo etc.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;b&gt;Anexo:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;En linux si compilas usando el compilador gcc es necesario indicarle todos los archivos y&amp;nbsp;librerías&amp;nbsp;a &amp;nbsp;utilizar, creando un makefile&amp;nbsp;simplificaría&amp;nbsp;las cosas pero por el momento simplemente lo compilare desde consola.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;Primero creare los modulos con:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -c leccion_05.cpp personaje.cpp tiempo.cpp colision.cpp&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Y luego enlazare los modulos con:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -o leccion_05 -lSDL -lSDL_image leccion_05.o personaje.o tiempo.o colision.o&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Y para ejecutarlo solo basta darle doble click al ejecutable o escribir en consola:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;./leccion_05&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descargar el codigo fuente:&lt;/span&gt; &lt;a href="http://www.mediafire.com/?5iacdhyao4aj10r"&gt;Leccion_05&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-2976477474857476092?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/2976477474857476092/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/09/sdl-leccion-05-colisiones.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2976477474857476092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2976477474857476092'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/09/sdl-leccion-05-colisiones.html' title='SDL Lección 05 - Colisiones'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-IlHb_cog4qw/TnQ32Njj_fI/AAAAAAAAAng/fqUqHDWk_LQ/s72-c/colision+a.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4881347987396572124</id><published>2011-09-06T10:54:00.000-07:00</published><updated>2011-12-04T23:23:40.127-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 04 - Animación</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Bienvenido a este cuarto tutorial sobre SDL, en este breve post sobre la&amp;nbsp;animación&amp;nbsp;de los personajes del videojuego, la&amp;nbsp;animación&amp;nbsp;sera sencilla solo para mostrar, ustedes pueden agregar tantos sprites como quieran para hacer el efecto de movimiento. Para ello re-tomare el&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://isakishi.blogspot.com/2011/08/sdl-leccion-03-tiempo.html" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; text-decoration: none;"&gt;&lt;b&gt;ejemplo anterior&lt;/b&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;a la que&amp;nbsp;agregue&amp;nbsp;la clase Tiempo, pero esta vez solo trabaje con la clase personaje. Este código lo he compilado en Linux y Windows y funciona perfectamente.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar&amp;nbsp;las cabeceras&amp;nbsp;"SDL/SDL.h" por "SDL.h" etc.&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="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/3BFVcxustWE/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3BFVcxustWE?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/3BFVcxustWE?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 style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;A&amp;nbsp;continuación&amp;nbsp;solo remarcare los cambios realizados dentro de la clase personaje. Los otros archivos completos para su&amp;nbsp;compilación&amp;nbsp;estan dentro el archivo descargable puesto abajo. Marco con rojo los cambios o agregados&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;//Archivo de Cabecera, Definicion de la clase Personaje.h&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#ifndef _PERSONAJE_H_&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#define _PERSONAJE_H_&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;extern SDL_Surface *pantalla;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;b&gt;//Definida arriba del Main&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;const int PERS_ANCHO = 60;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;const int PERS_ALTO = 60;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;const int PERS_IZQ = 1;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;const int PERS_DER = 2;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;const int PERS_AVANZA = 6;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;class Personaje{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp;private:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SDL_Surface *personaje;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;SDL_Rect persIzqClip[4];&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SDL_Rect persDerClip[4];&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int direccion;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt; int frame;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; bool animar;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp;public:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Personaje();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int x_persPos, y_persPos;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void clips();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void eventos();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void animacion();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void dibuja();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void limpiar();&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;#endif&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Bien dentro de los miembros privados de la clase personaje e agregado arreglos de 4 &amp;nbsp;dentro de persIzqClip[4] y persDerClip[4], estos arrays se encargaran de contener el numero total de&amp;nbsp;imágenes&amp;nbsp;a mostrar y que recortaremos de nuestro SheetSprites. Frames&amp;nbsp;servirá&amp;nbsp;como un contador para ir incrementando y remplazando las&amp;nbsp;imágenes, el valor boleano animar se encarga de valorar si la animacion se realiza o no. Por ultimo en la clase publica tenemos una&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;función llamada animacion() que se encargara de incrementar o detener los frames para la&amp;nbsp;animación.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;//Definicion de los metodos de la clase personaje.cpp&lt;/b&gt;&lt;br /&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "personaje.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Personaje::Personaje(){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;x_persPos = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;y_persPos = 100;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; white-space: pre;"&gt;  &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;frame = 0;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;  &amp;nbsp;&lt;/span&gt;animar = false;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;direccion = PERS_DER;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;personaje = IMG_Load ("fantasma.png");&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Dentro del constructor solo&amp;nbsp;defino&amp;nbsp;los valores nuevos.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//De los arreglos que declaramos empezamos a asignarle&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;una zona para recortar de nuestra imagen fantasma.png&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void Personaje::clips(){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[0].x = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[0].y = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[0].w = PERS_ANCHO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[0].h = PERS_ALTO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[1].x = 60;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[1].y = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[1].w = PERS_ANCHO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip[1].h = PERS_ALTO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; .&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; . etc...&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt; &lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;persDerClip[0].x = 0;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip[0].y = 60;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip[0].w = PERS_ANCHO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip[0].h = PERS_ALTO;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; .&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; . etc...&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;La&amp;nbsp;función&amp;nbsp;Personaje::clips() se encarga de recortar por coordenadas un cuadro de la imagen para ser pegadas, cada cuadro del arreglo tiene que ser indicado. Como ven cada indice del arreglo tiene que asignarsele cuatro valores que representa los cuatro&amp;nbsp;vértices&amp;nbsp;del cuadro a recortar. (Tal vez seria mejor crear una&amp;nbsp;función&amp;nbsp;que facilite su manejo, por el momento lo dejare&amp;nbsp;así).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zYRN5_W3f1c/TmZg3BxvLoI/AAAAAAAAAm8/04gxxOeG9ZU/s1600/fantasma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-zYRN5_W3f1c/TmZg3BxvLoI/AAAAAAAAAm8/04gxxOeG9ZU/s1600/fantasma.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void Personaje::eventos(){&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Uint8 *tecla;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;tecla = SDL_GetKeyState(NULL);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;if(tecla[SDLK_RIGHT] == 0){&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;animar = false;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(tecla[SDLK_LEFT] == 0){&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;animar = false;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;   &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(tecla[SDLK_RIGHT] == 1 and x_persPos &amp;lt; 360 - PERS_ANCHO){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;x_persPos += PERS_AVANZA;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;direccion = PERS_DER;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;      &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;animar = true;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(tecla[SDLK_LEFT] == 1 and x_persPos &amp;gt; 0){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;x_persPos += -(PERS_AVANZA);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;direccion = PERS_IZQ;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;      &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;animar = true;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Dentro de Personaje::eventos() como pueden ver he&amp;nbsp;agregue&amp;nbsp;una&amp;nbsp;condición&amp;nbsp;extra para cada tecla, &amp;nbsp;simplemente si SDLK_RIGHT == 0 quiere decir que la tecla no esta presionada en cambio el valor 1 significa que esta&amp;nbsp;presionada, dentro de ellas he agredo una simple&amp;nbsp;validación&amp;nbsp;de&amp;nbsp;animación, es&amp;nbsp;fácil&amp;nbsp;de entender que cuando la tecla esta sin presionar la&amp;nbsp;animación&amp;nbsp;sea falsa y no se llevara a cabo y viceversa.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void Personaje::animacion(){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (animar == true){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;frame++;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;if(frame &amp;gt;= 4){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;frame = 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (animar == false){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;frame =0;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Personaje::animacion(), esta&amp;nbsp;función&amp;nbsp;nueva se encarga de que si la&amp;nbsp;animación&amp;nbsp;es verdadera el contador de los frames se ira incrementando para remplazar el numero de la imagen y si esta supera el numero&amp;nbsp;máximo&amp;nbsp;de frames se vuelva a comenzar desde el primer cuadro.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Por el contrario si la&amp;nbsp;animación&amp;nbsp;es falsa o mas bien se no hay un boton presionado entonces esta volvera al primer cuadro.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;void Personaje::dibuja(){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Rect posicion;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;posicion.x = x_persPos;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;posicion.y = y_persPos;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (direccion == PERS_DER){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;      &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_BlitSurface(personaje, &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&amp;amp;persDerClip[frame]&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;,&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; pantalla, &amp;amp;posicion);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (direccion == PERS_IZQ){&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;      &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_BlitSurface(personaje, &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&amp;amp;persIzqClip[frame],&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; pantalla, &amp;amp;posicion);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Personaje::dibuja()&amp;nbsp;Aquí&amp;nbsp;el cambio es sencillo, simpleme le indicamos el cuadro del array correspondiente a dibujar cuando se incrementa el frame.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Ya por ultimo&amp;nbsp;quedaría&amp;nbsp;agregar la&amp;nbsp;función&amp;nbsp;animacion dentro del bucle del juego que esta dentro del main en el archivo leccion_04.cpp&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;SDL_Flip(pantalla);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;Personaje.animacion();&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp;} &amp;nbsp;&lt;b&gt;//Fin del control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;Personaje.limpiar();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;.&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Anexo:&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;En linux si compilas usando el compilador gcc es necesario indicarle todos los archivos y&amp;nbsp;librerías&amp;nbsp;a &amp;nbsp;utilizar, creando un makefile simplificaria las cosas, pero por el momento simplemente lo compilare desde consola.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Primero creare los&amp;nbsp;módulos&amp;nbsp;con:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -c leccion_04.cpp personaje.cpp tiempo.cpp&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Y luego enlazare los modulos con:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;g++ -o leccion_04 -lSDL -lSDL_image leccion_04.o personaje.o tiempo.o&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Y para ejecutarlo solo basta darle doble click al ejecutable o escribir en consola:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;./leccion_04&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: large; line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descagar el codigo fuente: &lt;/span&gt;&lt;a href="http://www.mediafire.com/?xp7488yxisdibjs"&gt;Leccion_04&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4881347987396572124?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4881347987396572124/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/09/sdl-leccion-04-animacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4881347987396572124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4881347987396572124'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/09/sdl-leccion-04-animacion.html' title='SDL Lección 04 - Animación'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-zYRN5_W3f1c/TmZg3BxvLoI/AAAAAAAAAm8/04gxxOeG9ZU/s72-c/fantasma.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4526868145513578318</id><published>2011-08-26T04:45:00.000-07:00</published><updated>2011-12-03T20:57:09.784-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><title type='text'>Berenice</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Se que este&amp;nbsp;vídeo&amp;nbsp;nada tiene que ver con los videojuegos, pero hace rato que lo hice con Synfig Studio y&amp;nbsp;quiero&amp;nbsp;mostrarselos.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&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/kEh5fjDMJJU/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kEh5fjDMJJU?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/kEh5fjDMJJU?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="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4526868145513578318?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4526868145513578318/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/berenice.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4526868145513578318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4526868145513578318'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/berenice.html' title='Berenice'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-3346111304374443654</id><published>2011-08-26T03:59:00.000-07:00</published><updated>2011-12-04T23:13:55.348-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 03 - Tiempo</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Bienvenido a este tercer tutorial sobre SDL, en este breve post sobre el manejo de tiempo y velocidad del videojuego, para ello tomare el &lt;/span&gt;&lt;/span&gt;&lt;a href="http://isakishi.blogspot.com/2011/08/sdl-leccion-02-movimiento.html" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;b&gt;ejemplo anterior&lt;/b&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt; y solo le&amp;nbsp;agregare&amp;nbsp;la clase Tiempo. Este código lo he compilado en Linux y Windows y funciona perfectamente.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;La unica diferencia en Windows seria cambiar&amp;nbsp;las cabeceras "SDL/SDL.h" por "SDL.h" etc.&amp;nbsp;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a correciones, sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Abajo dejo un enlace para descarar el ejemplo completo.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="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/UzuKZEfwV7A/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UzuKZEfwV7A?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/UzuKZEfwV7A?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&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Muy bien, como deben saber cada computadora cuenta con distintos recursos,&amp;nbsp;así&amp;nbsp;que los mas probable es que se ejecute a distintas velocidad y no queremos eso, para ello hay que gestionar el tiempo de tal manera que la velocidad se la misma en cualquier computadora. Afortunadamente SDL no provee un&amp;nbsp;función&amp;nbsp;que nos facilita tomar le&amp;nbsp;tiempo.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;//Definicion de la clase tiempo.h, s&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;e encarga que el manejo de tiempo se el mismo en cualquier ordenador.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#ifndef _TIEMPO_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#define _TIEMPO_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Constante para el intervalo de timpo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;const int MILISEGUNDOS = 30;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Comenzamo a definir los atributos y metodos de la clase tiempo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;class Tiempo{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;private:&lt;/span&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;int inicioTicks;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;int transcTicks;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;public:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;Tiempo();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;void inicio_Ticks();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;int transc_Ticks();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Como ven es muy sencilla, comenza por lo habitual definir la clase tiempo e incluir las librerias de SDL, ademas agrege un const int llamado MILISEGUNDOS que se encargara de establecer el tiempo que durara la imagen antes de sr cambiada, (recuerde que 1000 milisegundos = 1Seg). Dentro de los datos privados solo tenemos dos variables inicioTicks que se encarga de tomar el tiempo de inicio y transTicks que sera el tiempo transcurrido desde que se inicio, dentro de los datos publicos; estan el constructor y el las funciones que tomaran el tiempo.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Incluimos la clase tiempo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: normal;"&gt;#include "tiempo.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Iniciamo el consttructor de nuestra clase tiempo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Tiempo::Tiempo(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;inicioTicks = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;transcTicks = 0;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #134f5c; line-height: 18px; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;El constructor de nuestra clase Tiempo() solo se encaraga de inicializar los valor en 0.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Esta funciona se encarga de tomar el inicio del tiempo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: normal;"&gt;void Tiempo::inicio_Ticks(){&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;inicioTicks = SDL_GetTicks();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Ahora la funcion inicio_Ticks(). Con la variable inicioTicks se manda a llamar a una&amp;nbsp;función&amp;nbsp;propia de SDL llama SDL_GetTicks() esta se encarga de tomar el tiempo desde en momento en que SDL inicia nuestro bucle de juego.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;//Toma el tiempo de inicio lo resta con el tiempo trascurrido&amp;nbsp;y regresa el valor&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;int Tiempo::transc_Ticks(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;transcTicks = SDL_GetTicks() - inicioTicks;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&amp;nbsp; &amp;nbsp;return transcTicks;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;La&amp;nbsp;función&amp;nbsp;tranc_Ticks() tambien es muy sencilla toma nuevamente el tiempo con SDL_GetTicks y se le resta al tiempo del inicio para saber que tanto tiempo a&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;transcurrido, entoces esta retorna un valor con que representa el tiempo pasado.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Ahora solo queda llamar a la clase tiempo dentro del main. Re-utilizare el archivo leccion_02.cpp de la leccion anterior y solo remarcare los cambios y la llamada a la&amp;nbsp;función&amp;nbsp;trans_Ticks().&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Archivo leccion_03.cpp, implementacion de la clase tiempo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;#include "tiempo.h"&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "personaje.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;//Creamos un objeto de nuestra clase tiempo.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Tiempo Tiempo;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Personaje Personaje;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Event evento;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *pantalla = NULL;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *imagen = NULL;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;int main(int arc, char* args[]){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;bool quitar = false;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Init(SDL_INIT_EVERYTHING);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pantalla = SDL_SetVideoMode(360, 240, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_WM_SetCaption("Leccion 03",NULL);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;imagen = IMG_Load ("mapa.png");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.clips();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;//Control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;while(quitar == false){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;&lt;b&gt;//Iniciamo los tick del tiempo&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Tiempo.inicio_Ticks();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;Personaje.eventos();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;while(SDL_PollEvent(&amp;amp;evento)){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;if(evento.type == SDL_QUIT){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;             &lt;/span&gt;quitar = true;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;Personaje.dibuja();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;&lt;b&gt;//Evalua el tiempo transucurrido&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;     &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;i&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;f(Tiempo.transc_Ticks() &amp;lt; MILISEGUNDOS){&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;SDL_Delay(MILISEGUNDOS - Tiempo.transc_Ticks());&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;SDL_Flip(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;} /&lt;/span&gt;&lt;b style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;/Fin del control de Eventos&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//LIbera las superficies&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.limpiar();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(pantalla);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;La parte de le llamada Tiempo.transc_Ticks() es muy sencilla, simplemente&amp;nbsp;verifica que si el tiempo transcurrido es mayor a los milisegundos que establecimos esta&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;hará&amp;nbsp;una pausa con SDL_Delay().&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;SEGUNDA&amp;nbsp;VERSIÓN&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Aun podemos hacer las cosas mas simples si no queremos tomar el tiempo y en su vez solo pausar, entoces quitamos la clase tiempo y la sustituimos por solo SDL_delay() y le damos un valor en milisegudos que sera la pausa entre cada bucle.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;b style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;/Archivo leccion_03.cpp, implementacion de la clase tiempo&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;#include "personaje.h"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;/Creamos objeto de nuestra clase Personaje&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;Personaje Personaje;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Event evento;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *pantalla = NULL;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;SDL_Surface *imagen = NULL;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;int main(int arc, char* args[]){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;bool quitar = false;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Init(SDL_INIT_EVERYTHING);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pantalla = SDL_SetVideoMode(360, 240, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_WM_SetCaption("Leccion 03",NULL);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;imagen = IMG_Load ("mapa.png");&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.clips();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;//Control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;while(quitar == false){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;&lt;b&gt;//Iniciamo los tick del tiempo&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;Personaje.eventos();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;while(SDL_PollEvent(&amp;amp;evento)){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;if(evento.type == SDL_QUIT){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;             &lt;/span&gt;quitar = true;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;Personaje.dibuja();&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;SDL_Delay(30); &amp;nbsp; //Tiempo a pausar&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;SDL_Flip(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;} /&lt;/span&gt;&lt;b style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;/Fin del control de Eventos&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//LIbera las superficies&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Personaje.limpiar();&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(pantalla);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;return 0;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;b&gt;Anexo:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;En linux si compilas usando el compilador gcc es necesario indicarle todos los archivos y&amp;nbsp;librerías&amp;nbsp;a &amp;nbsp;utilizar, creando un makefile simplificaria las cosas, pero por el momento simplemente lo compilare desde consola.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Primero creare los&amp;nbsp;módulos&amp;nbsp;con:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -c leccion_03.cpp personaje.cpp tiempo.cpp&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Y luego enlazare los modulos con:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;g++ -o leccion_03 -lSDL -lSDL_image leccion_03.o personaje.o tiempo.o&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Y para ejecutarlo solo basta darle doble click al ejecutable o escribir en consola:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;./leccion_03&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: large;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descargar el codigo fuente:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.mediafire.com/?gj48by28vcytdag"&gt;Leccion_03&lt;/a&gt;&amp;nbsp;Primer&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;versión&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-3346111304374443654?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/3346111304374443654/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-03-tiempo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3346111304374443654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/3346111304374443654'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-03-tiempo.html' title='SDL Lección 03 - Tiempo'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4866933898464133793</id><published>2011-08-20T22:29:00.000-07:00</published><updated>2011-12-03T20:53:45.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Recursos y Herramientas'/><title type='text'>Programas Para Dibujar Sprites</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Existe una gran variedad de programas para dibujar Sprites, desde el sencillo Paint de Windows hasta el complejo Photoshop, pero&amp;nbsp;aquí&amp;nbsp;les presentare algunos que son gratuitos:&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: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Gimp&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;¿Quien no conoce gimp? La version alternativa a Photoshop, con la cual se puede dibujar con gran calidad y posee muchas herramientas, funciona en Windows y Linux. Por&amp;nbsp;supuesto&amp;nbsp;al tener tantas opciones&amp;nbsp;también&amp;nbsp;puedes&amp;nbsp;dibujar sprites con la&amp;nbsp;herramienta&amp;nbsp;lápiz, manejar colores indexados y crear gif.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5sTpQ2fmVJ8/TlCR-jAwRMI/AAAAAAAAAmo/5ux_j-XPbxY/s1600/gimp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://2.bp.blogspot.com/-5sTpQ2fmVJ8/TlCR-jAwRMI/AAAAAAAAAmo/5ux_j-XPbxY/s400/gimp.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Pagina Oficial:&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.gimp.org/"&gt;http://www.gimp.org/&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;MtPaint&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;MtPaint es mi programa favorito a la hora de dibujar sprites: sencillo y ligero, capas de abrir en solo dos segundo, obviamente maneja paletas con colores indexados y hasta puede manejar imagen en rgb, al igual que mucho trabaja con capas,&amp;nbsp;al principio me he complicado con las gradientes pero ha terminado&amp;nbsp;gustándome, aunque solo funciona en linux.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sdKkWM3sgtc/TlCR_aTch8I/AAAAAAAAAms/TH3hifDtrpk/s1600/mtpaint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://3.bp.blogspot.com/-sdKkWM3sgtc/TlCR_aTch8I/AAAAAAAAAms/TH3hifDtrpk/s400/mtpaint.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;&lt;b&gt;Pagina Oficial:&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;a href="http://mtpaint.sourceforge.net/"&gt;http://mtpaint.sourceforge.net/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;ASEPRITE&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Otro programa gratuito y sencillo para Windows, Mac y Linux es el Allegro Sprite Editor. Como es&amp;nbsp;común&amp;nbsp;maneja paletas de colores, capas, piel de cebolla, etc. Lo necesario para crear y editar sprites y animarlos.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7UpLcILJ17w/Tm6kK5ZEbRI/AAAAAAAAAnc/W0ZPvd-wHbw/s1600/screenshot02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/-7UpLcILJ17w/Tm6kK5ZEbRI/AAAAAAAAAnc/W0ZPvd-wHbw/s320/screenshot02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Pagina Oficial:&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.aseprite.org/"&gt;http://www.aseprite.org/&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4866933898464133793?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4866933898464133793/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/programas-para-dibujar-sprites.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4866933898464133793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4866933898464133793'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/programas-para-dibujar-sprites.html' title='Programas Para Dibujar Sprites'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-5sTpQ2fmVJ8/TlCR-jAwRMI/AAAAAAAAAmo/5ux_j-XPbxY/s72-c/gimp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-7036007677461268274</id><published>2011-08-15T19:53:00.000-07:00</published><updated>2011-12-04T21:32:05.838-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 02 - Movimiento</title><content type='html'>&lt;div style="text-align: justify;"&gt;Bienvenido al segundo tutorial sobre SDL, en este breve post tratare de explicar como crea un personaje bastante sencillo&amp;nbsp;y que se mueva por la pantalla al presionar las teclas de&amp;nbsp;dirección. Este código lo he compilado en Linux y Windows y funciona perfectamente.&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;La unica diferencia en Windows seria cambiar&amp;nbsp;las cabeceras&amp;nbsp;"SDL/SDL.h" por "SDL.h" etc.&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a&amp;nbsp;correcciones&amp;nbsp;de&amp;nbsp;código, pero sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"&gt;Abajo dejo un enlace para descargar el ejemplo completo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para ello me adentrare utilizare la&amp;nbsp;programación&amp;nbsp;orientada a objetos, al final&amp;nbsp;obtendrás&amp;nbsp;algo como esto (pfff, bueno los&amp;nbsp;gráficos&amp;nbsp;no son tan importantes en este momento):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-11y45dGOraU/TkmxYKXIZsI/AAAAAAAAAmg/fijevliM8Cg/s1600/leccion_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-11y45dGOraU/TkmxYKXIZsI/AAAAAAAAAmg/fijevliM8Cg/s320/leccion_02.jpg" width="320" /&gt;&lt;/a&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;&lt;div style="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/bV89UwIQWy8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bV89UwIQWy8?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/bV89UwIQWy8?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;br /&gt;(Esta es la primera revision, asi que esta sujeta a correciones, sobre todo gramatica :p).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bueno, para comenzar creare tres archivos: el personaje.h, personaje.cpp y leccion_02.cpp.&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Archivo de Cabecera, Definicion de la clase Personaje.h&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#ifndef _PERSONAJE_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#define _PERSONAJE_H_&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Librerias a utilizar&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #134f5c;"&gt;//Variable externa definida arriba del Main&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;extern SDL_Surface *pantalla;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Dimensiones, direreciones y velocidad de nuetro personaje&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;const int PERS_ANCHO = 60;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;const int PERS_ALTO = 60;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;const int PERS_IZQ = 1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;const int PERS_DER = 2;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;const int PERS_AVANZA = 6;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Empezamo a definir metodos y atributos de la clase personaje&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;class Personaje{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;SDL_Surface *personaje;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;SDL_Rect persIzqClip;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;SDL_Rect persDerClip;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;int direccion;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Personaje();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;int x_persPos, y_persPos;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;void clips();&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;void eventos();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;void dibuja();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;void limpiar();&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Comenzamos con lo habitual, definiendo el archivo de cabecera y&amp;nbsp;después&amp;nbsp;incluyendo las&amp;nbsp;librerías&amp;nbsp;que necesitamos SDL/SDL.h y SDL/SDL_image.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Después&amp;nbsp;de ello no topamos con un extern, este simplemente indica el nombre de una variable que utilizaremos y que esta defina en otro archivo. A&amp;nbsp;continuación&amp;nbsp;definimos algunas constantes, lo que hacen son bastante obvias, indican&amp;nbsp;tamaños&amp;nbsp;del dibujo, luego algunos estados para las&amp;nbsp;dirección&amp;nbsp;y una para la Velocidad o desplazamiento.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora empezamos a definir la clase Personaje: Dentro de&amp;nbsp;private, la primer variable se encarga de apuntar a la imagen que vamos a cargar, persIzqClip y persDerClip recortaran un cuadro de un imagen que sirve como SheetSprite(Un&amp;nbsp;SheetSprite es una imagen grande donde se tiene toda las posiciones posibles de un personaje).&amp;nbsp;Ya por ultimo indicamos una variable "direccion", que se encargara de asignar las distintas direcciones o estado que se pueden tomar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Dentro de la parte publica se encuentra el constructor, ademas de las&amp;nbsp;variables&amp;nbsp;x_persPos y y_persPos, estas funcionaran como coordenas de&amp;nbsp;posición&amp;nbsp;para el personaje.&amp;nbsp;Después&amp;nbsp;de ello siguen alguna funciones que&amp;nbsp;definirán&amp;nbsp;el comportamiento del personaje y que explicare en el siguiente archivo.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Constructor de nuestro clase personaje, iniciamos la variables y&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;aginamos la imagen superficie&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;Personaje::Personaje(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;x_persPos = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;y_persPos = 100;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;direccion = PERS_DER;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;personaje = IMG_Load ("fantasma.png");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para comenzar incluiremos el archivo de cabecera, y luego nos topamos con el constructor de clase Personaje, aqui simplemente iniacimos los valores, x_perPos e y_persPos con ellos le indicamos el lugar en forma de coordenanda donde queramos que aparesca, es importante recordar que el punto 0,0 se encuentra en la parte superior izquierda del monitor,&amp;nbsp;después, direccion indica la&amp;nbsp;dirección(duh!) inicial que querramos y por ultimo la variable personaje se encarage de cargar la imagen del Sprite con IMG_Load(). (yo estoy acostumbrado a trabajar con imagenes con color indexado ya que carga mas&amp;nbsp;rápido, como sea, tal vez usted sera algo que&amp;nbsp;tendrá&amp;nbsp;que investigar).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Establecemos el tamanio de los recortes para dibujarlos&amp;nbsp;después&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void Personaje::clips(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip.x = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip.y = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip.w = PERS_ANCHO;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persIzqClip.h = PERS_ALTO;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip.x = 60;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip.y = 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip.w = PERS_ANCHO;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;persDerClip.h = PERS_ALTO;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La funcion clips(), es basten facil simplemete toma las coordenas donde se iniciara a corta la imagen y que tan ancha y alta sera y se la asigna a su respectivo cuadro.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nO0L4Yfovy8/Tkm4md_BB5I/AAAAAAAAAmk/3bH6XVX-kMI/s1600/fantasma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-nO0L4Yfovy8/Tkm4md_BB5I/AAAAAAAAAmk/3bH6XVX-kMI/s1600/fantasma.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Manejea los eventos que ocurren cuando las teclas son presionadas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void Personaje::eventos(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;Uint8 *tecla;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;tecla = SDL_GetKeyState(NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;if(tecla[SDLK_RIGHT] == 1 &amp;amp;&amp;amp; x_persPos &amp;lt; 360 - PERS_ANCHO){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;x_persPos += PERS_AVANZA;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;direccion = PERS_DER;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;else if(tecla[SDLK_LEFT] &amp;nbsp;== 1 &amp;nbsp;&amp;amp;&amp;amp; x_persPos &amp;gt; 0){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;x_persPos += -(PERS_AVANZA);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;direccion = PERS_IZQ;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La funcion de eventos() es solo un poco mas complida, primero definimos un apuntador a una variable sin signo y&amp;nbsp;después&amp;nbsp;utilizamos SDL_GetKeyState() una&amp;nbsp;función&amp;nbsp;propia de SDL que permite verificar si una tecla a sido oprimida, si el valor es &amp;nbsp;igual a 1 entonces esta presionada. Para ello&amp;nbsp;pondré&amp;nbsp;una simple&amp;nbsp;condición&amp;nbsp;que&amp;nbsp;sucederá&amp;nbsp;cuando presione la tecla de&amp;nbsp;dirección&amp;nbsp;derecha&amp;nbsp;y si la&amp;nbsp;posición&amp;nbsp;sea menor al ancho de la pantalla (esto evita que el personaje se salga de la pantalla), entonces x_persPos se ira&amp;nbsp;incrementando&amp;nbsp;y el estado de&amp;nbsp;dirección&amp;nbsp;cambiara al indicado.&lt;br /&gt;&lt;br /&gt;La lista de todas las teclas de SDL la puedes encontrar en &lt;a href="http://www.libsdl.org/docs/html/sdlkey.html"&gt;este enlace&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;//&lt;b&gt;Dibujamos a nuestro personaje de esta forma:&amp;nbsp;&lt;/b&gt;&lt;b&gt;Imagen, recorte, superficie destino, coordenadas de posicion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void Personaje::dibuja(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Rect posicion;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;posicion.x = x_persPos;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;posicion.y = y_persPos;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (direccion == PERS_IZQ){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;SDL_BlitSurface(personaje, &amp;amp;persIzqClip, pantalla, &amp;amp;posicion);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;else if (direccion == PERS_DER){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;SDL_BlitSurface(personaje, &amp;amp;persDerClip, pantalla, &amp;amp;posicion);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La funcion dibuja() simplemente se encarga de pegar le sprite correspondiente a la direccion, para ello primero defino un variable de tipo SDL_rect y a esa variable le asigno la posion en donde se encuentra mi personaje, x_perPos y y_perPos. Ahora dependiendo la&amp;nbsp;dirección&amp;nbsp;sera el clip que se pegara con SDL_BlitSurface() como anteriomente mencione necesita cuatro parametros, el primero es una superficie origen con la imagen, el segundo un cuadro con el clip a pegar de la imagen, el tercero una superficie destino, en este caso la pantalla y por utilmo la coordenada donde sera pegada.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Liberamos la superficie que reservamos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;void Personaje::limpiar(){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_FreeSurface(personaje);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La funcion limpiar(), se encarga simplemente de libera la superficie cuando ya no es util.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ya por ultimo usare la clase personaje creada dentro del archivo leccion_02.cpp, que es muy similara a la leccion anterior que explique, solo resaltare en rojo la llamas al objeto personaje.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Archivo leccion_02.cpp&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;#include "personaje.h"&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Creamos una instancia de nuestra clase personaje&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Personaje Personaje;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Event evento;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Surface *pantalla = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Surface *imagen = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;int main(int arc, char* args[]){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;bool quitar = false;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_Init(SDL_INIT_EVERYTHING);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;pantalla = SDL_SetVideoMode(360, 240, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;SDL_WM_SetCaption("Leccion 02",NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt; &lt;b&gt;  //Cargamos imagenes y clips&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;imagen = IMG_Load ("mapa.png");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;   &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;Personaje.clips();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp;&lt;b&gt; //Inicia bucle del juego&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;while(quitar == false){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Personaje.eventos();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;while(SDL_PollEvent(&amp;amp;evento)){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;if(evento.type == SDL_QUIT){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;             &lt;/span&gt;quitar = true;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;          &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="color: #134f5c; white-space: pre;"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Personaje.dibuja();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;       &lt;/span&gt;SDL_Flip(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;} &amp;nbsp;&amp;nbsp;&lt;b&gt;//Fin del control de Eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//LIberamos superfices&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b style="color: #990000;"&gt;Personaje.limpiar();&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp; SDL_FreeSurface(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;return 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bien ahora si compila y ejecuta el programa probablemente lo primero que notaras es que el personaje se mueve demasiado rapido, esto es debido a que aun no gestionamos el tiempo de ejecucion, en la proxima leccion nos encargaremos de ello.&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Anexo:&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En linux si compilas usando g++ es necesario indicarle todos los archivos y&amp;nbsp;librerías&amp;nbsp;a &amp;nbsp;utilizar, creando un makefile&amp;nbsp;simplificaría&amp;nbsp;las cosas pero por el momento simplemente lo compilare desde consola.&lt;/div&gt;&lt;br /&gt;Primero creare los modulos con:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -c leccion_02.cpp personaje.cpp&lt;/span&gt;&lt;/blockquote&gt;Y luego enlazare los modulos con:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;g++ -o leccion_02 -lSDL -lSDL_image leccion_02.o personaje.o&lt;/span&gt;&lt;/blockquote&gt;Y para ejecutarlo solo basta darle doble click al ejecutable o escribir en consola:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;./leccion_02&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Si te interse saber un poco mas acerca de gcc y su compilado te dejo un &lt;a href="http://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm"&gt;enlace&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga el codigo fuente:&lt;/span&gt;&amp;nbsp;&lt;a href="http://www.mediafire.com/?iszoam5ui6gfqk1"&gt;Leccion_02&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-7036007677461268274?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/7036007677461268274/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-02-movimiento.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/7036007677461268274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/7036007677461268274'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-02-movimiento.html' title='SDL Lección 02 - Movimiento'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-11y45dGOraU/TkmxYKXIZsI/AAAAAAAAAmg/fijevliM8Cg/s72-c/leccion_02.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4978359090024793901</id><published>2011-08-11T16:40:00.000-07:00</published><updated>2011-08-27T09:20:04.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Recursos y Herramientas'/><title type='text'>Mapas de Videojuegos</title><content type='html'>A aquellos que les interese conseguir Sprites de los mapas de videojuegos les dejo un enlace a un pagina donde&amp;nbsp;podrás&amp;nbsp;encontra una gran cantidad de ellos:&amp;nbsp;&lt;a href="http://www.vgmaps.com/"&gt;http://www.vgmaps.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rkJJJxiEhWo/TkRpvxnEbWI/AAAAAAAAAl4/nkb1EFstcuM/s1600/mapams.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-rkJJJxiEhWo/TkRpvxnEbWI/AAAAAAAAAl4/nkb1EFstcuM/s1600/mapams.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-4978359090024793901?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4978359090024793901/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/mapas-de-videojuegos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4978359090024793901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4978359090024793901'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/mapas-de-videojuegos.html' title='Mapas de Videojuegos'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-rkJJJxiEhWo/TkRpvxnEbWI/AAAAAAAAAl4/nkb1EFstcuM/s72-c/mapams.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-6189740861541318288</id><published>2011-08-05T20:57:00.000-07:00</published><updated>2011-12-05T22:42:24.810-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 01 - Primeros Pasos</title><content type='html'>&lt;script language="javascript" src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://google-code-prettify.googlecode.com/svn/trunk/src/lang-css.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En esta breve&amp;nbsp;lección&amp;nbsp;simplemente&amp;nbsp;expondré&amp;nbsp;como crear ventana para obtener&amp;nbsp;una imagen con las&amp;nbsp;librerías&amp;nbsp;de SDL, ademas de implementar&amp;nbsp;un simple manejador de eventos. Este&amp;nbsp;código&amp;nbsp;lo he compilado en Linux y Windows y funciona perfectamente. Pero por comodidad&amp;nbsp;trabajare&amp;nbsp;en un entorno Linux. La&amp;nbsp;única&amp;nbsp;diferencia en Windows seria cambiar&amp;nbsp;las cabeceras&amp;nbsp;"SDL/SDL.h" por "SDL.h" etc.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;u&gt;&lt;strike&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/vyE2wgdshqE/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vyE2wgdshqE?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/vyE2wgdshqE?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;/strike&gt;&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;(Esta es la primera&amp;nbsp;revisión, asi que esta sujeta a correciones, sobre todo&amp;nbsp;gramática&amp;nbsp;:p).&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Incluimos las librerias&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;#include "SDL/SDL_image.h"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Comienza&amp;nbsp;nuestro programa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;int main(int arc, char* args[]){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;bool quitar = false;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Creamos la variable de eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Event evento;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Reservamos las superfices&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Surface *pantalla = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Surface *imagen = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Iniciamos los servicios de sdl&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_Init(SDL_INIT_EVERYTHING);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Establecemos los atributos y se los asignamos a la superfice pantalla&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;pantalla = SDL_SetVideoMode(320, 240, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_WM_SetCaption("Leccion 01",NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Cargamos la imagen&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;imagen = IMG_Load ("imagen.png");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Bucle principal del juego&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;while(quitar == false){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;//Iniciamos los eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&amp;nbsp;  &lt;/span&gt;while(SDL_PollEvent(&amp;amp;evento)){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;b&gt;    &lt;/b&gt;&lt;/span&gt;&lt;b&gt;//Evento para quitar&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;if(evento.type == SDL_QUIT){&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;         &lt;/span&gt;quitar = true;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; /&lt;/span&gt;/Dibujamos la superfice&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;SDL_BlitSurface(imagen, NULL, pantalla, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;//Volcamos el doble buffer&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;SDL_Flip(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;//Liberamos las superficies&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_FreeSurface(imagen);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;SDL_FreeSurface(pantalla);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;return 0;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Lo primero es indicar la librerias que vamos a utilizar, en este caso la libreria principal de SDL y debido a que SDL originalmente solo maneja imagen tipo BMP agregamos la &amp;nbsp;libreria &amp;nbsp;SDL_image que permite manejar formato PNG.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"&gt;Agregare un manejador de eventos, el cual se encarga de los eventos (duh!).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"&gt;Ademas de dos superficies, la primera sera el destino donde se dibujan todas las imagenes, la segunda sera una imagen origen la cual sera pegada sobre la pantalla.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Iniciamos los servicios que vayamos a&amp;nbsp;utilizar, en este caso indico todos, establecemos el modo de video de la pantalla, en este caso 320 es el ancho de la &amp;nbsp;pantalla, 240 es el alto de la pantalla, a&amp;nbsp;continuación&amp;nbsp;se indica la profundidad de los colores puede ser 8, 16, 32. &amp;nbsp;Luego indicamos algunos parametros extras SDL_SWSURFACE se encarga de almacenar las&amp;nbsp;superficies&amp;nbsp;en la memoria principal y SDL_DOUBLEBUF se encarga de utilizar un doble buffer que dibuja por&amp;nbsp;detrás&amp;nbsp;una imagen que sera intercambiada por la primera para evitar un parpadeo causado por no alcanzar a dibujar la imagen.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con IMG_Load simplemete le indicamos a imagen el archivo que cargaremos para superficie imagen, como&amp;nbsp;supondrán&amp;nbsp;"imagen.png" es una foto que ya tengo preparada.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ahora agregare un loop que junto con el manejador de eventos, en este caso este se ejecura hasta que el suceda el evento de cerrar la venta.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SDL_BlitSurface se encarga de dibujar en pantalla, el cual por el momento solo necesita una superficie origen (imagen) y una superficie destino&amp;nbsp;(pantalla)&amp;nbsp;donde esta sera pegada. En cuando a los&amp;nbsp;parámetros&amp;nbsp;NULL luegos nos ocuparemos de ellos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"&gt;Luego con SDL_FLIP nos encargamos de volcar el buffer doble.&lt;/div&gt;Ya por ultimo hay que liberar las superficies utilizadas.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;b&gt;Anexo:&lt;/b&gt;&lt;br /&gt;Debido a que trabajo en entorno Linux dejo una pequena referencia en cuanto a la&amp;nbsp;compilación. (en cuanto a Windows igualmente se tienen que enlazar las librerias)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para compilar el archivo.cpp, desde la linea de comandos se utiliza:&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&amp;nbsp; g++ leccion_01.cpp -lSDL -lSDL_image -o leccion_01&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;u&gt;Donde:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;g++:&lt;/b&gt;&amp;nbsp;Es el compilador a usar para archivos archivos.cpp y gcc para archivos.c&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;leccion_01.cpp: &lt;/b&gt;Es el archivo a compilar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;-lSDL -lSDL_image: &lt;/b&gt;Son las librerias a utilizar para poder compilar.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;-o&amp;nbsp;&lt;/b&gt;&lt;b&gt;leccion_01: &lt;/b&gt;Es el nombre del archivo ejecutable.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una vez compilado basta darle doble click al ejecutable, o escribir en consola ./leccion_01&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En estos momentos cuando corran el programa, puede que noten que ocupa muchos recursos, esto es debido a que aun no establecemos un ciertos limites respecto al taza de refresco ,&amp;nbsp;después&amp;nbsp;nos encargaremos de ello.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="color: #bf9000;"&gt;Descarga el codigo fuente:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.mediafire.com/?5peealo0g67j3jw"&gt;Leccion_01&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-6189740861541318288?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/6189740861541318288/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-01-primeros-pasos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/6189740861541318288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/6189740861541318288'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-01-primeros-pasos.html' title='SDL Lección 01 - Primeros Pasos'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-2461856169447067679</id><published>2011-08-05T18:36:00.000-07:00</published><updated>2011-12-06T21:45:30.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación'/><title type='text'>SDL Lección 00 - Preparándose</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; line-height: 18px;"&gt;¿&lt;/span&gt;Que se Necesita?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Si buscar crear un juego&amp;nbsp;rápidamente&amp;nbsp;y sin tener conocimientos de&amp;nbsp;programación entonces tal vez estas perdiendo tu tiempo&amp;nbsp;aquí.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para empezar a programar usando SDL primero necesitas tener alguna herramientas&amp;nbsp;básicas, como:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Un editor de texto.&lt;/li&gt;&lt;li&gt;Un compilador.&lt;/li&gt;&lt;li&gt;Las librerias de&amp;nbsp;desarrollo&amp;nbsp;de SDL.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Instalación&amp;nbsp;en Linux&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;En mi caso trabajare con el editor de texto gedit, aunque puede ser cualquiera y compilare desde la consola con g++ (Como los rudos).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para el instalar el compilador:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;apt-get install build-essential&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;Para el instalarse las librerias:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev&amp;nbsp;libsdl-ttf2.0-dev&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Instalación&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&amp;nbsp;en Windows&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para Windows utilizare Visual C++ Express Edition 2010 aunque existen otras opciones como Dev C++. Primero hay que bajarse las librerias de SDL desde su&lt;a href="http://www.libsdl.org/"&gt; pagina oficial&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La libreria principal de SDL que usaremos sera la de desarollo llamada&amp;nbsp;SDL-devel-1.2.14-VC8.zip&lt;/div&gt;&lt;br /&gt;&lt;b&gt;SDL&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.libsdl.org/download-1.2.php"&gt;http://www.libsdl.org/download-1.2.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Librerias Extras&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SDL tambien nos proporciona otras librerias que nos facilitan el trabajo, la mas usadas som SDL_image para diferentes tipos imagenes, SDL_mixer para el sonido y SDL_ttf para manejar tipografias. Hay que bajar la&amp;nbsp;librería&amp;nbsp;que dice contenga el nombre la palabra "devel", ejemplo:&lt;span class="Apple-style-span" style="color: darkblue; text-align: justify;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.10-VC.zip" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;SDL_image-devel-1.2.10-VC.zip&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;SDL_image&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.libsdl.org/projects/SDL_image/"&gt;http://www.libsdl.org/projects/SDL_image/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SDL_mixer&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.libsdl.org/projects/SDL_mixer/"&gt;http://www.libsdl.org/projects/SDL_mixer/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SDL_ttf&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.libsdl.org/projects/SDL_ttf/"&gt;http://www.libsdl.org/projects/SDL_ttf/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Después&amp;nbsp;de haber descargado y descomprimido todas las&amp;nbsp;librerías&amp;nbsp;necesarias debes buscar en cada una de ellas todos los archivos con&amp;nbsp;terminación&amp;nbsp;.dll (Dinamic Link Library), copialas &lt;span class="Apple-style-span" style="font-family: inherit;"&gt;y pegalas dentro de&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;C:\Windows\System32.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora pasemos a pasemos a enlazarlas las&amp;nbsp;librerías&amp;nbsp;en Visual C++.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Abrimos Visual C++ y creamos un nuevo proyecto&amp;nbsp;vació y le damos el nombre que&amp;nbsp;queramos. (Click para ampliar las imagenes).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-lL53Bdtr8eI/Tt710CKbwpI/AAAAAAAAAxE/W2JyUaGHk-E/s1600/SDL_Visual_C%252B%252B_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-lL53Bdtr8eI/Tt710CKbwpI/AAAAAAAAAxE/W2JyUaGHk-E/s400/SDL_Visual_C%252B%252B_01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Una vez creado seleccionamos en el&amp;nbsp;menú&amp;nbsp;Proyecto-&amp;gt;Propiedades y aparecera algo&amp;nbsp;así:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GLEkWWfmhBA/Tt72Uw7EdPI/AAAAAAAAAxM/vM82L5Zg_8k/s1600/SDL_Visual_C%252B%252B_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://3.bp.blogspot.com/-GLEkWWfmhBA/Tt72Uw7EdPI/AAAAAAAAAxM/vM82L5Zg_8k/s400/SDL_Visual_C%252B%252B_02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Seleccionamos VC++ Directorios y luego picamos en Include Directories o "Archivos de Inclusion", aparece una&amp;nbsp;pequeña&amp;nbsp;flecha en la izquierda picamos en ella y se desplegara un&amp;nbsp;pequeño&amp;nbsp;menu con la&amp;nbsp;opción&amp;nbsp;&amp;lt;Edit&amp;gt;, picamos en ella y aparece una nueva ventana.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-l1adhSwc4E4/Tt72p-q5qbI/AAAAAAAAAxU/MH579hb5L1I/s1600/SDL_Visual_C%252B%252B_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-l1adhSwc4E4/Tt72p-q5qbI/AAAAAAAAAxU/MH579hb5L1I/s400/SDL_Visual_C%252B%252B_03.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ahora clickeamos en la icono de la carpeta para agregar un archivo de&amp;nbsp;inclusión&amp;nbsp;y abajo aparece un&amp;nbsp;pequeño&amp;nbsp;boton con tres punto&amp;nbsp;suspensivos lo seleccionamos y en la nueva ventana que aparece seleccionamos la carpeta donde tenemos nuestras carpetas de SDL que diga "include", yo por comodidad he metido todos los archivos en una sola carpeta.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1C1pn1zSAwA/Tt73criUhiI/AAAAAAAAAxc/gOTXYqy-jik/s1600/SDL_Visual_C%252B%252B_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://1.bp.blogspot.com/-1C1pn1zSAwA/Tt73criUhiI/AAAAAAAAAxc/gOTXYqy-jik/s400/SDL_Visual_C%252B%252B_04.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Ahora hay que agregar la&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;librerías&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;de SDL,&amp;nbsp;seleccionamos&amp;nbsp; "Library Directories" y el procedimiento es el mismo que el anterior pero ahora con las carpetas que digan "lib".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Tor0m529IvQ/Tt74_unrl2I/AAAAAAAAAxk/i4I4rxGjIco/s1600/SDL_Visual_C%252B%252B_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-Tor0m529IvQ/Tt74_unrl2I/AAAAAAAAAxk/i4I4rxGjIco/s400/SDL_Visual_C%252B%252B_05.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ahora es momento de linkear las&amp;nbsp;librerías&amp;nbsp;para poder compilarlo. En la misma venta de propiedades&amp;nbsp;seleccionamos&amp;nbsp;del&amp;nbsp;menú&amp;nbsp;izquierdo&amp;nbsp;la&amp;nbsp;opción&amp;nbsp;de "Linker" y &amp;nbsp;luego en la lista que&amp;nbsp;aparecerá&amp;nbsp; a la derecha clickeamos en "Additional Dependecies".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cLu0UvuEm3A/Tt75eYr1gcI/AAAAAAAAAxs/763eXleLjGw/s1600/SDL_Visual_C%252B%252B_06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/-cLu0UvuEm3A/Tt75eYr1gcI/AAAAAAAAAxs/763eXleLjGw/s400/SDL_Visual_C%252B%252B_06.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="background-color: white; clear: both;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;En la nueva venta que&amp;nbsp;aparecerá&amp;nbsp;hay que agregar las&amp;nbsp;librería&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;principal&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;de SDL escribiendo:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="background-color: white; clear: both; line-height: 18px;"&gt;&lt;/div&gt;&lt;blockquote class="tr_bq" style="background-color: white; line-height: 18px; text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;SDL.lib&lt;br /&gt;SDLmain.lib&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;Y en caso de usar las&amp;nbsp;librerías&amp;nbsp;extras&amp;nbsp;también&amp;nbsp;debes escribir:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #134f5c; line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;SDL_image.lib&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style="background-color: white; color: #134f5c; line-height: 18px; text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;SDL_mixer.lib&lt;/span&gt;&lt;/b&gt;&lt;b style="background-color: white; color: #134f5c; line-height: 18px; text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;SDL_ttf.lib&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9MOVTDHB2sQ/Tt76dIEQCKI/AAAAAAAAAx0/wxl5pd_1xi4/s1600/SDL_Visual_C%252B%252B_07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://3.bp.blogspot.com/-9MOVTDHB2sQ/Tt76dIEQCKI/AAAAAAAAAx0/wxl5pd_1xi4/s400/SDL_Visual_C%252B%252B_07.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Por ultimo en esa misma ventana de propiedades en la parte izquierda tienes que ir a System y luego en la lista de la derecha que aparece seleccionas Subsystem, clickea en ella y&amp;nbsp;selecciona&amp;nbsp;la&amp;nbsp;opción&amp;nbsp;que dice: Windows (/SUBSYSTEM:WINDOWS).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-eT0MYgdoYwg/Tt77bHmDHCI/AAAAAAAAAx8/k4CCdbvdwhY/s1600/SDL_Visual_C%252B%252B_08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-eT0MYgdoYwg/Tt77bHmDHCI/AAAAAAAAAx8/k4CCdbvdwhY/s400/SDL_Visual_C%252B%252B_08.jpg" width="400" /&gt;&lt;/a&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: justify;"&gt;Le das aceptar para terminar, ahora es momento de crear un nuevo archivo de&amp;nbsp;código&amp;nbsp;y empezar a programar.&amp;nbsp;Después&amp;nbsp;del primer ejemplo que explico enseguida&amp;nbsp;tendrás&amp;nbsp;algo como esto.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nCLWaUDK2Ns/Tt78l5LzMtI/AAAAAAAAAyE/dEIer3j2iPo/s1600/SDL_Visual_C%252B%252B_09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/-nCLWaUDK2Ns/Tt78l5LzMtI/AAAAAAAAAyE/dEIer3j2iPo/s400/SDL_Visual_C%252B%252B_09.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;También&amp;nbsp;les dejo enlaces para utilizar SDL en diferentes compiladores.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/index.php"&gt;Lazyfoo&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.megaupload.com/?d=2SG0CA8D"&gt;Programacion de videojuegos con SDL Garcia Serrano&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.aprendeaprogramar.com/mod/resource/view.php?id=182"&gt;http://www.aprendeaprogramar.com/mod/resource/view.php?id=182&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7745698698159787562-2461856169447067679?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/2461856169447067679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-00.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2461856169447067679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/2461856169447067679'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-leccion-00.html' title='SDL Lección 00 - Preparándose'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-lL53Bdtr8eI/Tt710CKbwpI/AAAAAAAAAxE/W2JyUaGHk-E/s72-c/SDL_Visual_C%252B%252B_01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7745698698159787562.post-4503627995838462695</id><published>2011-08-01T15:21:00.000-07:00</published><updated>2011-12-22T01:16:23.305-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='SDL'/><title type='text'>SDL Manuales y Tutoriales</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7LQWN3DBriI/Tjcl3-FnKOI/AAAAAAAAAjI/x3b3opZg4eo/s1600/sdl_button.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-7LQWN3DBriI/Tjcl3-FnKOI/AAAAAAAAAjI/x3b3opZg4eo/s1600/sdl_button.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Si estas comenzando a programar videojuegos en C/C++ tal vez la API de SDL te pueda ser de gran ayuda.&lt;br /&gt;&lt;a href="http://www.libsdl.org/"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; color: black;"&gt; es una&amp;nbsp;librería multiplataforma (Windows, Linux, Mac OS, Atari, Sega, DreamCast, etc) escrita en C, la cual esta enfocada en el&amp;nbsp;desarrollo&amp;nbsp;de videojuegos en 2D.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Tal como sus creadores lo dicen: "SDL no hace todo, si no que hace lo que todos." Ademas&amp;nbsp;SDL&amp;nbsp;también&amp;nbsp;puede ser combina con OPengl para la creacion de juegos en 3D.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Manuales y Tutoriales&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.megaupload.com/?d=2SG0CA8D"&gt;Programacion de Videojuegos con SDL Garcia Serrano&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?p2hg0van7v3i287"&gt;Tutorial de libSDL para la programaciond de videojuegos Antonio&amp;nbsp;García&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?qddn060ovu6daq2"&gt;Videojuego, c++ y SDL&amp;nbsp;Suben&amp;nbsp;Dario Orozco&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pagina recomendadas:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.losersjuegos.com.ar/"&gt;Loserjuegos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lazyfoo.net/SDL_tutorials/index.php"&gt;Lazyfoo&lt;/a&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/7745698698159787562-4503627995838462695?l=isakishi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isakishi.blogspot.com/feeds/4503627995838462695/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-manuales-y-tutoriales.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4503627995838462695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7745698698159787562/posts/default/4503627995838462695'/><link rel='alternate' type='text/html' href='http://isakishi.blogspot.com/2011/08/sdl-manuales-y-tutoriales.html' title='SDL Manuales y Tutoriales'/><author><name>isakishi</name><uri>http://www.blogger.com/profile/01833588743336546892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-aJj4qz_7ffc/TrNzdpHfl0I/AAAAAAAAAsY/Jogqqkx60S4/s1600/perfil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7LQWN3DBriI/Tjcl3-FnKOI/AAAAAAAAAjI/x3b3opZg4eo/s72-c/sdl_button.gif' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
