<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>glVertex</title>
	<atom:link href="http://glvertex.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://glvertex.wordpress.com</link>
	<description>Un blog sobre Computadores, C++ y OpenGL</description>
	<lastBuildDate>Tue, 01 Feb 2011 23:30:52 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='glvertex.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>glVertex</title>
		<link>http://glvertex.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://glvertex.wordpress.com/osd.xml" title="glVertex" />
	<atom:link rel='hub' href='http://glvertex.wordpress.com/?pushpress=hub'/>
		<item>
		<title>OpenGL</title>
		<link>http://glvertex.wordpress.com/2011/02/01/opengl/</link>
		<comments>http://glvertex.wordpress.com/2011/02/01/opengl/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 11:04:54 +0000</pubDate>
		<dc:creator>debenoprma</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://glvertex.wordpress.com/?p=26</guid>
		<description><![CDATA[Buenos días, Hace un par de días decidimos con un amigo meternos en el mundo de OpenGL, una librería gráfica de código abierto multiplataforma y multilenguaje pensada para el tratamiento de gráficos 2D y 3D. Empezamos a buscar información en internet sobre su API ( Application Programming Interface ) y nos dimos cuenta de la poca [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glvertex.wordpress.com&amp;blog=19639122&amp;post=26&amp;subd=glvertex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Buenos días,</p>
<p style="text-align:justify;">Hace un par de días decidimos con un amigo meternos en el mundo de<a href="http://www.opengl.org/" target="_blank"> OpenGL</a>, una librería gráfica de código abierto multiplataforma y multilenguaje pensada para el tratamiento de gráficos 2D y 3D. Empezamos a buscar información en internet sobre su API ( Application Programming Interface ) y nos dimos cuenta de la poca documentación que había disponible para novatos para la integración de OpenGL en Ubuntu sin librerías de ayuda como <a href="http://www.opengl.org/resources/libraries/glut/" target="_blank">GLUT</a> . Así que decidimos empezar con GLUT para familiarizarnos con el entorno OpenGL primero, y más tarde ya nos centraríamos en la librería &lt;glx.h&gt; que es la que ayuda a unir el <a href="http://es.wikipedia.org/wiki/X_Window_System" target="_blank">X Window System</a> con OpenGL, aunque a un nivel mucho mas bajo que GLUT y por lo tanto con más control.</p>
<p><span id="more-26"></span></p>
<p style="text-align:justify;">Nos bajamos sus librerías de los repositorios ( freeglut es una copia del GLUT original pero su desarrollo esta continuado )</p>
<pre><span style="color:#999999;">sudo aptitude freeglut3-dev</span></pre>
<p style="text-align:justify;">Así que nos plantamos delante de Geany para intentar hacer funcionar algo. En lugar de tutoriales, cogimos un código de ejemplo de la red y lo intentamos compilar ( para comprobar si habíamos instalado todas las librerías necesarias ) utilizando el siguiente comando:</p>
<pre><span style="color:#999999;">gcc p1.c -o p1 -lGL -lGLU -lglut</span></pre>
<p style="text-align:justify;">La pantalla nos mostró todo de cuadrados girando de múltiples colores y tamaños, y eso fue suficiente, cerramos el programa y empezamos a rebuscar entre el código para buscar lo básico para empezar un programa en GLUT. Queríamos llegar a tener una ventana con un color ( muy básico ), pero además queríamos conseguir reducir el programa al máximo con tal de ver que cosas eran necesarias y cuáles no lo eran, el programa que quedó fue el siguiente:</p>
<p><pre class="brush: cpp;">&lt;/pre&gt;
void renderFn() {    glClearColor ( R, G, B, 1.0f ); //Se establece el color con el que se limpiara la ventana

 glClear ( GL_COLOR_BUFFER_BIT ); //Se limpia la ventana con el color establecido

 glutSwapBuffers (); // Se intercambian los buffers ( doble buffer )

}

int main ( int argc, char** argv ) {

 glutInit ( &amp;argc, argv ); //Se inicializa la librería GLUT y se establece conexión con el sistema de Ventanas X

 glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE ); //Establecemos el modo de renderizado como RGB y con Buffer Doble

 glutCreateWindow ( &quot;Ventana  a Color&quot; ); //Creamos una ventana con el título &quot;Ventana a Color&quot;

 glutDisplayFunc ( renderFn ); //Se establece la función que se usará para renderizar    glutMainLoop ();

 return 0;
} </pre></p>
<p style="text-align:justify;">Con este sencillo programa se crea una ventana con el color que pongas en los valores R, G, B ( del 0.0f al 1.0f ).  Es el &#8220;Hello World!&#8221; de OpenGL y GLUT!  Después, para probar un poco más decidimos hacer que la ventana fuera cambiando de color, esto ya requería un control del tiempo así que aprenderíamos nuevos conceptos de GLUT. El programa que quedó fue el siguiente:</p>
<p><pre class="brush: cpp;">
#include&lt;GL/freeglut.h&gt;float R = 0.0f;
float G = 0.0f;
float B = 0.0f;
int helper = 0;

void timerFn ( int v ) {
    glClearColor ( R, G, B, 1.0f );
    glutPostRedisplay ();
    if(helper == 0){
        R = R + 0.01f;
    } else {
        R = R - 0.01f;
    }
    if ( R &gt; 0.9f ) {
        helper = 1;
    } else if ( R &lt; 0.1f ) {
        helper = 0;
    }
    glutTimerFunc ( 20, timerFn, 1 );
}
void renderFn() {
   glClear ( GL_COLOR_BUFFER_BIT );
   glutSwapBuffers ();
}
int main ( int argc, char** argv ) {

    glutInit ( &amp;argc, argv ); /*Se inicializa la librería GLUT y

se establece conexión con el sistema de Ventanas X
    glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE );
    glutCreateWindow ( &quot;Ventana  a Color&quot; );
    glutDisplayFunc ( renderFn );
    glutTimerFunc( 20, timerFn, 1 );
    glutMainLoop ();
    return 0;

}

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glvertex.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glvertex.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glvertex.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glvertex.wordpress.com&amp;blog=19639122&amp;post=26&amp;subd=glvertex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glvertex.wordpress.com/2011/02/01/opengl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dde07ef61d4be22fd2e1f0bca76178d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">debenoprma</media:title>
		</media:content>
	</item>
		<item>
		<title>¿Como representan los números los ordenadores?</title>
		<link>http://glvertex.wordpress.com/2011/01/31/%c2%bfcomo-representan-los-numeros-los-ordenadores/</link>
		<comments>http://glvertex.wordpress.com/2011/01/31/%c2%bfcomo-representan-los-numeros-los-ordenadores/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 22:31:24 +0000</pubDate>
		<dc:creator>debenoprma</dc:creator>
				<category><![CDATA[Computer Structure]]></category>
		<category><![CDATA[Representación numeral]]></category>

		<guid isPermaLink="false">http://glvertex.wordpress.com/?p=15</guid>
		<description><![CDATA[Todos utilizamos el ordenador a diario ( o casi ) y muchas veces no nos preguntamos sobre su funcionamiento porque creemos que es extremadamente complicado. Y es cierto. Porque, aunque la base es sencilla, los ordenadores actuales son extremadamente complejos internamente por la cantidad de componentes que tienen, entradas, protocolos, memorias, registros, salidas, etc&#8230; y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glvertex.wordpress.com&amp;blog=19639122&amp;post=15&amp;subd=glvertex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Todos utilizamos el ordenador a diario ( o casi ) y muchas veces no nos preguntamos sobre su funcionamiento porque creemos que es extremadamente complicado. Y es cierto. Porque, aunque la base es sencilla, los ordenadores actuales son extremadamente complejos internamente por la cantidad de componentes que tienen, entradas, protocolos, memorias, registros, salidas, etc&#8230; y actualmente a nivel usuario es muy difícil llegar a comprender exactamente como un ordenador actual ( o uno de hace 5 años ) funciona internamente.</p>
<p style="text-align:justify;"><a href="http://glvertex.files.wordpress.com/2011/01/binar.jpg"><img class="size-medium wp-image-24 aligncenter" title="binar" src="http://glvertex.files.wordpress.com/2011/01/binar.jpg?w=300&#038;h=221" alt="" width="300" height="221" /></a></p>
<p style="text-align:justify;">Pero supongo que si habéis llegado hasta esta página y estáis leyendo estas lineas es que estáis interesados en este funcionamiento, ¿no?.  Bueno, pues tal y cómo he dicho la base es muy sencilla así que empezaré por allí.</p>
<p style="text-align:justify;"><span id="more-15"></span></p>
<h2 style="text-align:justify;">El sistema Decimal</h2>
<p style="text-align:justify;">Los ordenadores ( la electrónica digital en general ) no puede utilizar el sistema de numeración que utilizamos nosotros habitualmente, llamado sistema <strong>Decimal, </strong>es el que te enseñaron el la escuela y que estás harto de utilizar. Al sistema decimal también se le llama sistema convencional en base 10 ( de aquí decimal ), que básicamente lo que quiere decir es que representamos todos los números con 10 símbolos<em> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}</em>, todos los números los creamos posicionando estos símbolos de la forma adecuada. La palabra posicionar es muy importante porque este sistema es un sistema<strong> posicional </strong>lo que quiere decir que la posición en la que están los símbolos decide su peso dentro del número en cuestión. Por ejemplo mostremos el caso del número 428:</p>
<blockquote><p>El número 428 está compuesto por 3 símbolos, el &#8217;4&#8242;, el &#8217;2&#8242; y el &#8217;8&#8242;, pero podemos ver que ordenando los números de forma distinta no daría el mismo número ( muy lógico, ¿verdad? ), el 284 es diferente al 842 que a su vez es diferente al 482 que es diferente al 428. Esto es porque cada número, dependiendo de su posición, tendrá un peso mayor o menor dentro del número. En el sistema decimal cada posición hace que el valor de ese símbolo se multiplique por la potencia de 10 elevado a  la posición. El símbolo 4 está en la posición 2 ( siempre se empieza por cero y de derecha a izquierda ) así que su valor es de 4 x 10^2 ( 10^2 significa 10 elevado a 2 ) que equivale a 4 x 100 = 400, de la misma forma el dos tiene el valor de     2 x 10^1 = 2 x 10 = 20 y el 8 de 8 x 10^0 = 8 x 1 = 8. Si sumamos estos resultados nos da 400 + 20 + 8 = 428.</p></blockquote>
<p style="text-align:justify;">Pero, ¿todo esto que tiene que ver con el ordenador?, realmente nada pero nos ayudará a entender el sistema de numeración <strong>binario</strong>, o sistema convencional en base <strong>2</strong>.</p>
<h2 style="text-align:justify;">El sistema Binario</h2>
<p style="text-align:justify;">Como habrás podido deducir, el sistema convencional en base 2 sólo tiene dos símbolos, <em>{0, 1}</em> y a partir de estos dos símbolos se construyen todos los números posibles, y de hecho de la misma forma que el sistema decimal, veamos, en el sistema decimal cada símbolo se multiplicaba por 10^(posición), y 10 era la base. De la misma forma un número en Binario se obtiene multiplicando el símbolo con la base ( 2 ) elevada a la posición. Por ejemplo:</p>
<blockquote><p><strong>1010</strong> = 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 0 = 1 x 8 + 0 x 4 + 1 x 2 + 0 x 1 = <strong>10</strong>, así pues el número 1010 ( en base 2) es 10 ( en base 10 ), tal como se ve pasar del sistema binario al decimal es muy sencillo, basta con sumar las potencias de 2 de las posiciones en las que hay un 1.</p></blockquote>
<p style="text-align:justify;">Es exactamente igual al sistema decimal excepto porque sólo utiliza 2 símbolos en lugar de 10 y porque la base es diferente ( los números representados en binario son más largos también ).</p>
<p style="text-align:justify;">¿Y porque los ordenadores utilizan este sistema? Porque trabajan con tensiones, cuando reciben una tensión de 5V ( no són 5V exactos y varían según el ordenador ), el ordenador la considera un 1 lógico y cuando reciben una tensión cercana al &#8217;0&#8242; lo consideran un &#8217;0&#8242; lógico.</p>
<p style="text-align:justify;">Para reducir algunas de las cadenas de números en binario en computación habitualmente se utiliza también el sistema hexadecimal</p>
<h2 style="text-align:justify;">El  sistema Hexadecimal</h2>
<p style="text-align:justify;">El sistema hexadecimal, o sistema convencional en base 16, utiliza los símbolos del sistema decimal hasta el 9 y después usa de la A a la F para representar del 10 al 15. El sistema hexadecimal es utilizado principalmente para reducir cadenas largas de números en binario. Esto es porque el 16 es una potencia de 2 y por lo tanto es sencillísimo pasar entre estas dos representaciones. Por ejemplo:</p>
<blockquote><p>La cadena 100110101110 en binario ( 2478 en decimal ) se puede agrupar en grupos de 4 dígitos { 1001, 1010, 1110 } y pasarlos a Hexadecimal,         1001 (b) = 9 (d) = 9 (h) ; 1010 (b) = 10 (d) = A (h) ; 1110 (b) = 14 (d) = E (h), con lo qual tenemos que 100110101110 (b) = 2478 (d) = 9AE (h)</p></blockquote>
<p style="text-align:justify;">De esta forma sólo agrupando de 4 en 4 y pasando a su equivalente en Hexadecimal se pueden convertir cadenas de n dígitos en cadenas de (n+n%4)/4, esto es posible porque el mayor número que puede conseguirse en hexadecimal con un sólo dígito es el 15, que es a la vez el máximo que puede conseguirse en 4 dígitos en el sistema binario.</p>
<p style="text-align:justify;">Esto es todo por este artículo, en el siguiente empezaré a hablar sobre algunos circuitos lógicos básicos y también me falta hablar sobre la representación de números enteros (con signo). Y poco a poco iremos entendiendo como todas estas cosas básicas llegan a hacer un procesador. Al final de esta serie de artículos tengo pensado que lleguéis a entender un procesador muy básico de 16 bits programable.</p>
<p style="text-align:justify;">Si hay alguna pregunta sentiros libres de dejar vuestras dudas en los comentarios.</p>
<p style="text-align:justify;">Saludos!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glvertex.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glvertex.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glvertex.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glvertex.wordpress.com&amp;blog=19639122&amp;post=15&amp;subd=glvertex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glvertex.wordpress.com/2011/01/31/%c2%bfcomo-representan-los-numeros-los-ordenadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dde07ef61d4be22fd2e1f0bca76178d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">debenoprma</media:title>
		</media:content>

		<media:content url="http://glvertex.files.wordpress.com/2011/01/binar.jpg?w=300" medium="image">
			<media:title type="html">binar</media:title>
		</media:content>
	</item>
	</channel>
</rss>
