<?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>Diario De Un Programador</title>
	<atom:link href="http://profesorx.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://profesorx.wordpress.com</link>
	<description>Programacion En C++, C#, Desarrollo de VideoJuegos Y Mas</description>
	<lastBuildDate>Sat, 25 Jun 2011 23:23:46 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='profesorx.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Diario De Un Programador</title>
		<link>http://profesorx.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://profesorx.wordpress.com/osd.xml" title="Diario De Un Programador" />
	<atom:link rel='hub' href='http://profesorx.wordpress.com/?pushpress=hub'/>
		<item>
		<title>OGRE 1.6.0RC1 Liberado!</title>
		<link>http://profesorx.wordpress.com/2008/08/29/ogre-160rc1-liberado/</link>
		<comments>http://profesorx.wordpress.com/2008/08/29/ogre-160rc1-liberado/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 20:20:19 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/08/29/ogre-160rc1-liberado/</guid>
		<description><![CDATA[¡Por fin ha llegado! Tenemos ya la nueva versión de OGRE, 1.6.x conocida como &#8216;Shoggoth&#8217;, en Release Candidate, lo que indica que se acerca el día de la versión final. Algunas de las mejoras de esta versión son: Nuevos y mas potentes compiladores de scripts Geometry shaders en OpenGL Antialiasing en texturas renderizadas, así como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=54&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>¡Por fin ha llegado! Tenemos ya la nueva versión de OGRE, 1.6.x conocida como &#8216;Shoggoth&#8217;, en Release Candidate, lo que indica que se acerca el día de la versión final. Algunas de las mejoras de esta versión son: </p>
<ul>
<li>Nuevos y mas potentes compiladores de scripts
<li>Geometry shaders en OpenGL
<li>Antialiasing en texturas renderizadas, así como en ventanas
<li>Corrección de gamma&nbsp; sRGB
<li>Soporte para Alpha to coverage support
<li>Un nuevo SceneManager, &#8221;Portal Connected Zone&#8217;
<li>Soporte para Shador Map Parallel-Split
<li>Generación mejorada de tangente
<li>Máscaras de fundido Skeletal
<li>Nuevas opciones de carga en segundo plano
<li>Soporte para asignación de memoria (allocators) personalizada.</li>
</ul>
<p>Existen más cambios que puedes revisar en: <a title="http://ogre.svn.sourceforge.net/viewvc/ogre/branches/v1-6/Docs/ChangeLog.html" href="http://ogre.svn.sourceforge.net/viewvc/ogre/branches/v1-6/Docs/ChangeLog.html">http://ogre.svn.sourceforge.net/viewvc/ogre/branches/v1-6/Docs/ChangeLog.html</a></p>
<p>Notas de migración: <a title="http://www.ogre3d.org/wiki/index.php/ShoggothNotes#Porting_notes" href="http://www.ogre3d.org/wiki/index.php/ShoggothNotes#Porting_notes">http://www.ogre3d.org/wiki/index.php/ShoggothNotes#Porting_notes</a></p>
<p>Página de descarga:</p>
<p><a title="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=406&amp;Itemid=149" href="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=406&amp;Itemid=149">http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=406&amp;Itemid=149</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=54&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/08/29/ogre-160rc1-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Nociones B&#225;sicas Sobre OGRE Parte 3A</title>
		<link>http://profesorx.wordpress.com/2008/08/22/nociones-bsicas-sobre-ogre-parte-3a/</link>
		<comments>http://profesorx.wordpress.com/2008/08/22/nociones-bsicas-sobre-ogre-parte-3a/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 02:25:54 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/08/22/nociones-bsicas-sobre-ogre-parte-3a/</guid>
		<description><![CDATA[3A. Entrada por teclado usando OIS. Unbuffered. Lo prometido es deuda, veremos ahora como realizar la entrada por medio de teclado y ratón usando la librería OIS. He decidido separar esta entrega en dos partes, entrada Unbuffered y entrada Buffered, esto para que no sea una lección muy larga, y porque también la forma en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=51&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>3A. Entrada por teclado usando OIS. Unbuffered.</strong></p>
<p>Lo prometido es deuda, veremos ahora como realizar la entrada por medio de teclado y ratón usando la librería OIS. He decidido separar esta entrega en dos partes, entrada Unbuffered y entrada Buffered, esto para que no sea una lección muy larga, y porque también la forma en que se implementa una y otra es un poco diferente.</p>
<p><span id="more-51"></span>
<p>En la entrada Unbuffered se revisa constantemente el estado del teclado o ratón para verificar si hemos pulsado o no una tecla o botón. Si llegáramos a realizar alguna acción mientras no estamos revisando el teclado o ratón, ésta acción se pierde ya que no se guarda. Esto por lo general no afecta ya que la lectura se realiza varias veces por segundo, tantas como cuadros (Frame) realice nuestra aplicación.</p>
<p>Por el contrario, en la entrada Buffered, los eventos se reciben por medio de un mecanismo de llamadas (callback). Esto significa que cada vez que pulsamos una tecla o un botón del ratón, este evento se guarda en un área de memoria llamada buffer de eventos, de donde posteriormente son enviados a nuestra aplicación, y de esa forma nunca perdemos ninguna acción que realicemos.</p>
<p>Lo mas común es utilizar entrada Buffered para los menús y GUI&#8217;s de nuestra aplicación, y la entrada Unbuffered para todo lo demás, aunque eso también dependerá del tipo de cosas que queramos hacer. Recomiendo que prueben los dos, y decidan cual se adapta mejor a la tarea..</p>
<p>Ya que sabemos esto, ahora si podemos proceder a realizar el código para la captura de eventos por teclado y ratón. Para esto utilizaremos tres clases de OIS, InputManager, Keyboard y Mouse. La clase InputManager nos permite inicializar el sistema de entrada, diciéndole sobre que ventana queremos hacer la captura de eventos, para esto, necesitamos pasarle un &#8220;HANDLE&#8221; a la ventana, este handle lo vamos a obtener por medio de RenderWindow::getCustomAttribute(). Para que OIS acepte este handle, necesitamos convertirlo a un formato llamado OIS::ParamList. Es un poco difícil de explicar, así que mejor pongo a continuación el código completo que necesitamos para crear el InputManager.</p>
<p>&nbsp;</p>
<p><code>
<pre>size_t windowHnd;
OIS::ParamList pl;

// Obtenemos el handle a la ventana de render
mWindow-&gt;getCustomAttribute("WINDOW", &amp;windowHnd);

// Convertimos el handle en un ParamList
std::ostringstream windowHndStr;
windowHndStr &lt;&lt; windowHnd;
pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));

// Creamos nuestro Input Manager
mInputManager = OIS::InputManager::createInputSystem(pl);
</pre>
<p></code></p>
<p>Una vez creado nuestro InputManager, lo utilizaremos para crear los objetos mKeyboard y mMouse, que nos permitirán manejar el teclado y ratón respectivamente. El primer parametro representa el tipo de dispositivo, y el segundo parametro sera true para modo buffered, y false para unbuffered. Debemos hacer ademas una conversion (cast) para el tipo de entrada:</p>
<p>&nbsp;</p>
<p><code>
<pre>mKeyboard =  static_cast&lt;ois::keyboard  *&gt; (mInputManager-&gt;createInputObject(OIS::OISKeyboard, this-&gt;bufferedInput));
mMouse = static_cast&lt;ois::mouse  *&gt; (mInputManager-&gt;createInputObject(OIS::OISMouse, this-&gt;bufferedInput));
</pre>
<p></code></p>
<p>Listo! con esto ya hemos creado los objetos necesarios para capturar la entrada. Ahora, cada vez que necesitemos hacer la captura, debemos de llamar al método capture de los objetos Keyboard y Mouse, este codigo lo podemos poner en nuestro método FrameStarted():</p>
<p>&nbsp;</p>
<p><code>
<pre>mKeyboard-&gt;capture();
mMouse-&gt;capture();
</pre>
<p></code></p>
<p>Ahora, para saber que si pulsamos una tecla y cual fue, llamamos al método mKeyboard-&gt;isKeyDown(), en este ejemplo, vamos a comprobar si la tecla pulsada es ESC con el siguiente código:</p>
<p>&nbsp;</p>
<p><code>
<pre>if (mKeyboard-&gt;isKeyDown(OIS::KC_ESCAPE) == true)
</pre>
<p></code></p>
<p>Los códigos de teclado comienzan con KC_, para las teclas de cursor, su códigos serían:</p>
<ol>
<li>Izquierda = KC_LEFT
<li>Derecha = KC_RIGHT
<li>Arriba = KC_UP
<li>Abajo= KC_DOWN;</li>
</ol>
<p>La mayoría de códigos son auto explicativos, Si quieres saber el resto de códigos de teclado, puedes verlos en el archivo OISKeyboard.h.</p>
<p>Para saber el estado del ratón, utilizamos el método mMouse-&gt;getMouseState(), que nos devuelve información sobre que botón del ratón hemos pulsado, y en que posición de la pantalla nos encontramos. En este caso queremos saber si hemos pulsado el botón izquierdo del ratón, podemos usar esta información directamente:</p>
<p><code>
<pre>if (mMouse-&gt;getMouseState().buttonDown(OIS::MB_Left))
</pre>
<p></code></p>
<p>O podemos usar una variable intermedia para leer la información:</p>
<p><code>
<pre>OIS::MouseState ms = mMouse-&gt;getMouseState();
if (ms.buttonDown(OIS::MB_Left))
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>Finalmente, antes de salir de nuestra aplicación, debemos destruir todo el sistema de entrada que hemos creado, esto lo hacemos con el siguiente código:</p>
<p><code>
<pre>mInputManager-&gt;destroyInputObject(mKeyboard);
mInputManager-&gt;destroyInputObject(mMouse);
OIS::InputManager::destroyInputSystem(mInputManager);
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>Ahora, con esta información, vamos a modificar el código de la lección pasada para que podamos salir de nuestra aplicación cuando pulsemos ESC o el botón izquierdo del ratón. Añadiremos 4 variables a nuestra clase, mInputManager, mKeyboard, mMouse, y bufferedInput, esta última para que guardemos la elección de si queremos utilizar el modo buffered o el unbuffered.</p>
<p>También crearemos 5 métodos, primero initInputSystem(), en donde pondremos la inicialización del InputManager, luego initAllInputs(), que llamara a 2 métodos más initKeyboardInputs() e initMouseInputs(), que es donde crearemos los objetos que se encargaran del manejo de la entrada,&nbsp; captureAllDevices(), en donde llamaremos a los métodos capture de los objetos mkeyboard y mMoiuse, eliminaremos el código en FrameStarted() que cerraba la aplicación pasados 3 segundos y agregaremos ahora la condición para salir del programa con ESC o botón izquierdo del ratón, y también agregaremos el código para destruir el sistema de entrada al finalizar la aplicación. A continuación les dejo el código completo con comentarios:</p>
<p>OgreTutorial3.H</p>
<p><code>
<pre>#include "Ogre.h"
#include "OIS\OIS.h"

class OgreApp : Ogre::FrameListener
{
public:

    Ogre::Root* mRoot;
    Ogre::RenderWindow* mWindow;
    Ogre::SceneManager* mSceneMgr;
    Ogre::Camera* mCamera;
    Ogre::Viewport* mViewport;
    OIS::InputManager* mInputManager;
    OIS::Keyboard* mKeyboard;
    OIS::Mouse* mMouse;
    bool exit;
    bool bufferedInput;

    OgreApp()
    {
        exit = false;
        mRoot = NULL;
        mWindow = NULL;
        mInputManager = NULL;
    }

    ~OgreApp()
    {
        if (mWindow != NULL)
        {
            if (mInputManager != NULL)
            {
                mInputManager-&gt;destroyInputObject(mKeyboard);
                mInputManager-&gt;destroyInputObject(mMouse);
                OIS::InputManager::destroyInputSystem(mInputManager);
                mInputManager = NULL;
            }
        }

        if (mRoot != NULL)
            delete mRoot;
    }

    void go()
    {
        createRoot();
        setupRenderSystem();
        if (exit == true)
            return;
        else
        {
            createRenderWindow();
            initInputSystem(false);
            initAllInputs();
            initEventHandlers();
            createScene();
            startRenderLoop();
        }
    }

    void createRoot()
    {
        // Crea el objeto root, la base de todo el sistema de OGRE
        mRoot = new Ogre::Root();
    }

    void setupRenderSystem()
    {
        // Mostrar cuadro de dialogo para elegir sistema de render
        // y resolucion de la ventana
        if (!mRoot-&gt;showConfigDialog())
        {
            exit = true;
        }
    }

    void createRenderWindow()
    {
        // Crea una ventana por defecto, con un titulo especificado
        mWindow = mRoot-&gt;initialise(true, "Mi Aplicacion con OGRE");
    }

    void initInputSystem(bool bufferedMode)
    {
        size_t windowHnd;
        OIS::ParamList pl;

        Ogre::LogManager::getSingleton().logMessage("*** Iniciando OIS ***");
        bufferedInput = bufferedMode;
        // Obtenemos el handle a la ventana de render
        mWindow-&gt;getCustomAttribute("WINDOW", &amp;windowHnd);

        // Convertimos el handle en un ParamList
        std::ostringstream windowHndStr;
        windowHndStr &lt;&lt; windowHnd;
        pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));

        // Creamos nuestro Input Manager
        mInputManager = OIS::InputManager::createInputSystem(pl);

    }

    void initAllInputs()
    {
        initKeyboardInputs();
        initMouseInputs();
    }

    void initEventHandlers()
    {
        mRoot-&gt;addFrameListener(this);
    }

    void createScene()
    {
        // Elegir manejador de escenario
        mSceneMgr = mRoot-&gt;createSceneManager(Ogre::ST_GENERIC);

        // Crear camara y posicionarla en el espacio
        mCamera = mSceneMgr-&gt;createCamera("CamaraPrincipal");
        mCamera-&gt;setPosition(Ogre::Vector3(0.0f, 0.0f, 500.0f));
        mCamera-&gt;lookAt(Ogre::Vector3(0.0f, 0.0f, 0.0f));
        mCamera-&gt;setNearClipDistance(5.0f);
        mCamera-&gt;setFarClipDistance(5000.0f);

        // Agregar camara al viewport
        mViewport = mWindow-&gt;addViewport(mCamera);
        mViewport-&gt;setBackgroundColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f));
    }

    void startRenderLoop()
    {
        // Comenzar el despliegue
        mRoot-&gt;startRendering();
    }

    bool frameStarted(const Ogre::FrameEvent &amp;evt)
    {
        // Capturamos la entrada
        captureAllDevices();

        // Comprobamos si pulsamos la tecla ESC
        if (mKeyboard-&gt;isKeyDown(OIS::KC_ESCAPE) == true)
            exit = true;

        // Comprobamos si pulsamos el boton izquierdo del raton
        OIS::MouseState ms = mMouse-&gt;getMouseState();
        if (ms.buttonDown(OIS::MB_Left))
            exit = true;

        if (exit == true)
            return false;
        else
            return true;
    }

    bool frameEnded(const Ogre::FrameEvent &amp;evt)
    {
        return true;
    }

    void initKeyboardInputs()
    {
        Ogre::LogManager::getSingleton().logMessage("*** Iniciando entrada por teclado (Keyboard) ***");
        mKeyboard =  static_cast&lt;OIS::Keyboard*&gt; (mInputManager-&gt;createInputObject(OIS::OISKeyboard, this-&gt;bufferedInput));
    }

    void initMouseInputs()
    {
        Ogre::LogManager::getSingleton().logMessage("*** Iniciando entrada por raton (Mouse) ***");
        mMouse = static_cast&lt;OIS::Mouse*&gt; (mInputManager-&gt;createInputObject(OIS::OISMouse, this-&gt;bufferedInput));
    }

    void captureAllDevices()
    {
        if (mKeyboard != NULL)
        {
            mKeyboard-&gt;capture();
        }

        if (mMouse != NULL)
        {
            mMouse-&gt;capture();
        }

    }

};
</pre>
<p></code></p>
<p>OgreTutorial3.cpp</p>
<p><code>
<pre>#include "OgreTutorial3.h"

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main()
#endif
{
    OgreApp* app = new OgreApp();
    app-&gt;go();
    delete app;

    return 0;
}
</pre>
<p></code></p>
<p>En la siguiente entrega veremos como implementar el sistema de entrada Buffered. Por el momento es todo. Espero sus comentarios.</p>
<p><strong>Actualización 13/Oct/2008:</strong> Modificado OIS::MouseButtonID::MB_Left por OIS::MB_Left para evitar un error de compilación en Linux.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=51&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/08/22/nociones-bsicas-sobre-ogre-parte-3a/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Archivos de ayuda de OGRE en formato .chm</title>
		<link>http://profesorx.wordpress.com/2008/08/17/archivos-de-ayuda-de-ogre-en-formato-chm/</link>
		<comments>http://profesorx.wordpress.com/2008/08/17/archivos-de-ayuda-de-ogre-en-formato-chm/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 00:30:42 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/08/17/archivos-de-ayuda-de-ogre-en-formato-chm/</guid>
		<description><![CDATA[Para ayudarme mientras estoy programando con OGRE, siempre recurro a la documentación, ya que OGRE es tan extenso que es imposible que puedas saber todo. Para aquellos que están en mi misma situación, se que esto les será de mucha utilidad. Pongo a su disposición la documentación de OGRE y OgreNewt compilada en formato CHM, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=48&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para ayudarme mientras estoy programando con OGRE, siempre recurro a la documentación, ya que OGRE es tan extenso que es imposible que puedas saber todo.</p>
<p>Para aquellos que están en mi misma situación, se que esto les será de mucha utilidad. Pongo a su disposición la documentación de OGRE y OgreNewt compilada en formato CHM, disfrútenla y por favor, hagan un buen uso de ella <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a title="http://rapidshare.com/files/138069568/OgreAPIReference-1.4.9.chm" href="http://rapidshare.com/files/138069568/OgreAPIReference-1.4.9.chm">http://rapidshare.com/files/138069568/OgreAPIReference-1.4.9.chm</a></p>
<p><a title="http://rapidshare.com/files/138075400/OgreNewtAPIReference.chm" href="http://rapidshare.com/files/138075400/OgreNewtAPIReference.chm">http://rapidshare.com/files/138075400/OgreNewtAPIReference.chm</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=48&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/08/17/archivos-de-ayuda-de-ogre-en-formato-chm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Nuevo Foro de OGRE en espa&#241;ol</title>
		<link>http://profesorx.wordpress.com/2008/08/13/nuevo-foro-de-ogre-en-espaol/</link>
		<comments>http://profesorx.wordpress.com/2008/08/13/nuevo-foro-de-ogre-en-espaol/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 23:48:56 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/08/13/nuevo-foro-de-ogre-en-espaol/</guid>
		<description><![CDATA[Pues ha surgido un nuevo foro para usuarios de OGRE en español, de parte de Davirro, se llama Ogreros, promete ser algo interesante. Por allá me verán aportando mi granito de Arena, Enlace: http://ogreros.forogeneral.es/board/index.php<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=44&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pues ha surgido un nuevo foro para usuarios de OGRE en español, de parte de Davirro, se llama <a href="http://ogreros.forogeneral.es/board/index.php">Ogreros</a>, promete ser algo interesante.</p>
<p>Por allá me verán aportando mi granito de Arena,</p>
<p>Enlace: <a title="http://ogreros.forogeneral.es/board/index.php" href="http://ogreros.forogeneral.es/board/index.php">http://ogreros.forogeneral.es/board/index.php</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/44/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/44/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=44&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/08/13/nuevo-foro-de-ogre-en-espaol/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Emule v0.49b Disponible</title>
		<link>http://profesorx.wordpress.com/2008/08/06/emule-v049b-disponible/</link>
		<comments>http://profesorx.wordpress.com/2008/08/06/emule-v049b-disponible/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 16:29:59 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/08/06/emule-v049b-disponible/</guid>
		<description><![CDATA[Una nueva versión de emule ya esta disponible desde el 1 de agosto de 2008, es uno de los mejores programas P2P que existen, y aunque muchos lo pueden utilizar para descargar software y música de manera ilegal, eso no indica que sea así necesariamente, puede ser utilizado también para la distribución más rápida de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=42&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Una nueva versión de <a href="http://www.emule-project.net">emule</a> ya esta disponible desde el 1 de agosto de 2008, es uno de los mejores programas P2P que existen, y aunque muchos lo pueden utilizar para descargar software y música de manera ilegal, eso no indica que sea así necesariamente, puede ser utilizado también para la distribución más rápida de software libre, así que si aún no lo has probado, porque no le das una oportunidad <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Página de descargas:</p>
<p><a title="http://www.emule-project.net/home/perl/general.cgi?l=17&amp;rm=download" href="http://www.emule-project.net/home/perl/general.cgi?l=17&amp;rm=download">http://www.emule-project.net/home/perl/general.cgi?l=17&amp;rm=download</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=42&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/08/06/emule-v049b-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Nociones B&#225;sicas Sobre OGRE. Parte 2.</title>
		<link>http://profesorx.wordpress.com/2008/07/28/nociones-bsicas-sobre-ogre-parte-2/</link>
		<comments>http://profesorx.wordpress.com/2008/07/28/nociones-bsicas-sobre-ogre-parte-2/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 00:38:07 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/07/28/nociones-bsicas-sobre-ogre-parte-2/</guid>
		<description><![CDATA[2. Cómo reaccionar a eventos dentro de OGRE, la clase FrameListener. En esta lección veremos cómo podemos reaccionar a eventos en tiempo de ejecución dentro de OGRE, lo que nos permitirá salir de la aplicación o interactuar por medio del teclado / ratón. Para ello utilizaremos dos clases que vienen incorporadas dentro de esta librería: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=39&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>2. Cómo reaccionar a eventos dentro de OGRE, la clase FrameListener.</strong></p>
<p>En esta lección veremos cómo podemos reaccionar a eventos en tiempo de ejecución dentro de OGRE, lo que nos permitirá salir de la aplicación o interactuar por medio del teclado / ratón. Para ello utilizaremos dos clases que vienen incorporadas dentro de esta librería: FrameListener y FrameEvent.</p>
<p><span id="more-39"></span>
<p>Pero, ¿Qué es un FrameListener? A continuación pongo la definición tal cual viene en la API (traducida, claro):</p>
<blockquote><p><em>Un &#8220;listener&#8221; (oyente) es una interfaz diseñada para ser llamada cuando ocurren ciertos eventos. Esta clase (FrameListener) define la interfaz que se relaciona a eventos de cuadros (frame).</em></p>
</blockquote>
<p>Lo anterior significa que si yo defino un FrameListener, mi aplicación sería capaz de realizar acciones entre cuadro y cuadro. Lo más común es utilizarlo para la captura de eventos de teclado y ratón, o para actualizar el movimiento y la posición de los diferentes objetos ya sea manualmente, o también por medio de alguna biblioteca de simulación de físicas, aunque no está limitado a esas tareas. Siempre que&nbsp; tengamos alguna acción que queramos realizar en cada cuadro, entonces debemos utilizar un FrameListener.</p>
<p>La clase FrameListener contiene 2 métodos virtuales, frameStarted() y frameEnded(). El método frameStarted() es llamado al inicio del cuadro, antes de hacer la actualización de la escena, y el método frameEnded() es llamado después de haber hecho la actualización de la escena y antes de actualizar el siguiente cuadro. Ambos métodos regresan un valor boolean, que le indica al motor gráfico si debe seguir actualizando, o salir del ciclo de actualización (render). Si no re-definimos estos métodos, el valor por defecto es true, o sea, seguir actualizando. </p>
<p>Los métodos frameStarted() y frameListener() tienen además un parámetro de tipo FrameEvent. Este FrameEvent no es mas que una estructura que contiene información acerca del evento, básicamente el tiempo transcurrido (en segundos) desde el último evento (timeSinceLastEvent) y el tiempo transcurrido desde el último cuadro (timeSinceLastFrame). La diferencia entre uno y otro valor es que el primero nos cuenta el tiempo que ha pasado de frameStarted() a framEnded() y viceversa, y el otro el tiempo de frame a frame, o sea de frameStarted() a frameStarted() y de frameEnded() a frameEnded().</p>
<p>Una vez que hemos definido una clase para que sea nuestro FrameListener, necesitamos &#8220;registrarla&#8221; para que OGRE sepa de su existencia, esto lo hacemos mediante el método addFrameListener() de nuestra clase Root. OGRE además nos permite el uso&nbsp; de múltiples FrameListener si así lo deseamos, pero cada uno que definamos siempre debemos recordar utilizar addFrameListener() para registrarlo y poderlo utilizar. Muchos programadores separan la lógica de su programa en varios FrameListener, pero nosotros, por simplicidad de esta lección, utilizaremos solo uno.</p>
<p>Con esta información, ya podemos hacerle una mejora a nuestro programa que nos permita salir pasados 3 segundos.</p>
<p>Para empezar, modificamos la definición de la clase de nuestra lección anterior (OgreTutorial1.h) de forma que nos quede de la siguiente manera:</p>
<p>&nbsp;</p>
<p><code>
<pre>class OgreApp : Ogre::FrameListener
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>Después añadimos la siguiente variable a nuestra clase, que nos permitirá contar el tiempo que ha transcurrido</p>
<p>&nbsp;</p>
<p><code>
<pre>Ogre::Real mTime; </pre>
<p></code></p>
<p>&nbsp;</p>
<p>Añadimos además el siguiente método a nuestra clase, que nos permitirá registrar nuestro FrameListener()</p>
<p>&nbsp;</p>
<p><code>
<pre>    void initEventHandlers()
    {
        mRoot-&gt;addFrameListener(this);
    }
</pre>
<p></code></p>
<p>Utilizamos el puntero this ya que la clase de nuestra aplicación es a su vez nuestro FrameListener, pero como mencionaba antes, es posible hacerlo en una clase separada, en cuyo caso, podríamos hacer algo como lo siguiente:</p>
<p>&nbsp;</p>
<p><code>
<pre>fl = new MiFrameListener();
mRoot-&gt;addFrameListener(fl);
</pre>
<p></code></p>
<p>Definimos nuestros métodos frameStarted() y frameEnded(), y vamos a agregar el código para que pasados 3 segundos, salga de la aplicación. Para esto, vamos a cambiar nuestra variable exit a true si es que han pasado mas de 3 segundos, y como mencionamos antes, necesitamos que regrese un valor de false para indicar que no queremos que siga actualizando el despliegue. En este caso haremos la comprobación al inicio del cuadro, pero podríamos hacerlo al final si lo deseáramos, esto ya dependerá de lo que queramos y necesitemos hacer en nuestra aplicación.</p>
<p>&nbsp;</p>
<p><code>
<pre>    bool frameStarted(const Ogre::FrameEvent &amp;evt)
    {
        // Incrementamos nuestro contador de tiempo
        mTime += evt.timeSinceLastFrame;

        // Verificamos si han pasado mas de 3 segundos y salimos
        if (mTime &gt; 3)
            exit = true;

        if (exit == true)
            return false;
        else
            return true;
    }

    bool frameEnded(const Ogre::FrameEvent &amp;evt)
    {
        return true;
    }
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>Finalmente vamos a añadir 2 líneas nada mas, initEventHandlers(); dentro del método Go(), antes de crear nuestra escena para registrar nuestro FrameListener, y mTime = 0 dentro de createScene(), para que el contador de tiempo comience de cero.</p>
<p>A continuación pongo el código completo.</p>
<p><strong>OgreTutorial2.h</strong></p>
<p><code>
<pre>#include "Ogre.h"

class OgreApp : Ogre::FrameListener
{
public:

    Ogre::Root* mRoot;
    Ogre::RenderWindow* mWindow;
    Ogre::SceneManager* mSceneMgr;
    Ogre::Camera* mCamera;
    Ogre::Viewport* mViewport;
    Ogre::Real mTime;
    bool exit;
    bool bufferedInput;

    OgreApp()
    {
        exit = false;
        mRoot = NULL;
        mWindow = NULL;
    }

    ~OgreApp()
    {
        if (mRoot != NULL)
            delete mRoot;
    }

    void go()
    {
        createRoot();
        setupRenderSystem();
        if (exit == true)
            return;
        else
        {
            createRenderWindow();
            initEventHandlers();
            createScene();
            startRenderLoop();
        }
    }

    void createRoot()
    {
        // Crea el objeto root, la base de todo el sistema de OGRE
        mRoot = new Ogre::Root();
    }

    void setupRenderSystem()
    {
        // Mostrar cuadro de dialogo para elegir sistema de render
        // y resolucion de la ventana
        if (!mRoot-&gt;showConfigDialog())
        {
            exit = true;
        }
    }

    void createRenderWindow()
    {
        // Crea una ventana por defecto, con un titulo especificado
        mWindow = mRoot-&gt;initialise(true, "Mi Aplicacion con OGRE");
    }

    void initEventHandlers()
    {
        mRoot-&gt;addFrameListener(this);
    }

    void createScene()
    {
        // Elegir manejador de escenario
        mSceneMgr = mRoot-&gt;createSceneManager(Ogre::ST_GENERIC);

        // Crear camara y posicionarla en el espacio
        mCamera = mSceneMgr-&gt;createCamera("CamaraPrincipal");
        mCamera-&gt;setPosition(Ogre::Vector3(0.0f, 0.0f, 500.0f));
        mCamera-&gt;lookAt(Ogre::Vector3(0.0f, 0.0f, 0.0f));
        mCamera-&gt;setNearClipDistance(5.0f);
        mCamera-&gt;setFarClipDistance(5000.0f);

        // Agregar camara al viewport
        mViewport = mWindow-&gt;addViewport(mCamera);
        mViewport-&gt;setBackgroundColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f));

        // Inicializando el contador de tiempo.
        mTime = 0;

    }

    void startRenderLoop()
    {
        // Comenzar el despliegue
        mRoot-&gt;startRendering();
    }

    bool frameStarted(const Ogre::FrameEvent &amp;evt)
    {
        // Incrementamos nuestro contador de tiempo
        mTime += evt.timeSinceLastFrame;

        // Verificamos si han pasado mas de 3 segundos y salimos
        if (mTime &gt; 3)
            exit = true;

        if (exit == true)
            return false;
        else
            return true;
    }

    bool frameEnded(const Ogre::FrameEvent &amp;evt)
    {
        return true;
    }

};
</pre>
<p></code></p>
<p>&nbsp;</p>
<p><strong>OgreTutorial2.cpp</strong></p>
<p><code>
<pre>#include "OgreTutorial2.h"

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main()
#endif
{
    OgreApp* app = new OgreApp();
    app-&gt;go();
    delete app;

    return 0;
}
</pre>
<p></code></p>
<p>Ahora, si ejecutan esta aplicación verán que termina sola pasados 3 segundos, ya no necesitamos matar el proceso.</p>
<p>Por el momento es todo. Dejaremos para la siguiente lección el uso de OIS para la entrada por teclado, ya que es algo extenso y complejo, y no quiero alargar mucho este tema. Espero sus comentarios.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=39&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/07/28/nociones-bsicas-sobre-ogre-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Configurar Un Proyecto en VC++ 2008 Para OGRE</title>
		<link>http://profesorx.wordpress.com/2008/07/19/configurar-un-proyecto-en-vc-2008-para-ogre/</link>
		<comments>http://profesorx.wordpress.com/2008/07/19/configurar-un-proyecto-en-vc-2008-para-ogre/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 22:06:03 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/07/19/configurar-un-proyecto-en-vc-2008-para-ogre/</guid>
		<description><![CDATA[Antes de comenzar a desarrollar proyectos en OGRE, es necesario que sepamos como debemos configurar nuestro IDE, y cuales son las opciones y archivos que necesitamos. Existe un asistente (wizard) para OGRE, pero no recomiendo su utilización, ya que no nos permite personalizar las opciones que necesitamos, es mejor que lo configuremos nosotros a nuestro [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=31&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Antes de comenzar a desarrollar proyectos en OGRE, es necesario que sepamos como debemos configurar nuestro IDE, y cuales son las opciones y archivos que necesitamos. Existe un asistente (wizard) para OGRE, pero no recomiendo su utilización, ya que no nos permite personalizar las opciones que necesitamos, es mejor que lo configuremos nosotros a nuestro gusto, así que&nbsp; a continuación trataré de explicar todos esos detalles necesarios para nuestras futuras aplicaciones con OGRE. Estas instrucciones las he realizado con Visual C++ Express 2008, pero no debe ser difícil adaptarlas para alguna otra versión de Visual Studio <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span id="more-31"></span>
<p>Para empezar, creamos un nuevo proyecto con Visual Studio, aquí tenemos dos opciones, podemos crear una aplicación de consola o un proyecto win32, recomiendo una aplicación win32 si es que estas comenzando a utilizar este motor gráfico. El otro modo (consola) puede sernos útil para la depuración, ya que aparecerá información en la ventana de consola sobre la carga de OGRE, pero aunque no tengamos la salida por consola, podemos revisar el archivo ogre.log, que contiene toda esa información y nos puede en determinado momento indicar que parte esta fallando de nuestro programa. Si queremos cambiar de aplicación win32 a aplicación de consola y viceversa en un proyecto ya creado, podemos irnos a &#8220;proyecto /`propiedades / propiedades de configuración / vinculador / sistema / susbsistema&#8221;</p>
<p>Cualquiera que sea la opción que elijamos, lo siguiente será decirle que queremos un proyecto vacío.
<p>Una vez que hayamos creado el proyecto, lo siguiente será configurarlo para que podamos compilar un proyecto.
<p>Nos vamos al menú &#8220;Proyecto / Propiedades&#8221; (alt-F7) y luego en el cuadro de dialogo que se abre, nos vamos a&nbsp; &#8220;propiedades de configuración / depuración /directorio de trabajo&#8221; y ahí le diremos cual es el directorio de nuestro archivo ejecutable. Esto es muy importante para que podamos depurar/ejecutar desde dentro de Visual Studio, pues de otra forma nos marcaría error a la hora de querer ejecutarlo.
<p>En ese mismo cuadro, nos vamos a &#8220;c++/ general /Directorios de inclusión adicionales&#8221; y ahí pondremos los directorios include de OGRE <strong>separados por comas</strong>, en mi caso, ya que utilizo la versión source de OGRE, son los siguientes:
<p>C:\ogre\OgreMain\include;C:\ogre\Dependencies\include</p>
<p>Si además piensas utilizar CEGUI (una librería para diseñar GUIS que se acopla muy bien con OGRE, tienes que añadir el siguiente:</p>
<p>C:\ogre\Samples\Common\CEGUIRenderer\include</p>
<p>Si piensas hacer los <a href="http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials">tutoriales básicos del OGRE Wiki</a>, necesitarás añadir además de los anteriores:</p>
<p>C:\ogre\Samples\Common\include</p>
<p>Si utilizas el SDK, los directorios son un poco diferentes, verifica cuáles son en tu caso.</p>
<p>Lo siguiente es configurar los directorios en donde se encuentran las librerías (bibliotecas) , esto es en la opción &#8220;vinculador / general / directorios de bibliotecas adicionales&#8221; :</p>
<p>C:\ogre\lib;C:\ogre\Dependencies\lib\Release</p>
<p>Si vas a usar la versión Debug de las dependencias de OGRE, cambia Release por Debug</p>
<p>y por ultimo añadimos los nombres de las librerías que vamos a utilizar, esto lo hacemos en &#8220;vinculador / entrada / dependencias adicionales&#8221;, pero en este caso, a diferencia de los directorios, deben ir <strong>separadas con espacios</strong>.</p>
<p>Para el modo Release:</p>
<p>OgreMain.lib OIS.lib</p>
<p>Para el modo Debug:</p>
<p>OgreMain_d.lib OIS_d.lib</p>
<p>Si pensamos utilizar CEGUI, añadimos además:</p>
<p>Modo Release: OgreGUIRenderer.lib CEGUIBase.lib</p>
<p>Modo Debug: OgreGUIRenderer_d.lib CEGUIBase_d.lib</p>
<p>Después (copiamos) los archivos resources.cfg y plugins.cfg al directorio de nuestro ejecutable, que se encuentran dentro de la carpeta \ogre\Samples\Common\bin\Release y también copiamos todos los archivos dll que se encuentran en esa carpeta:</p>
<p>CEGUIBase.dll<br />CEGUIExpatParser.dll<br />CEGUIFalagardWRBase.dll<br />cg.dll<br />OgreGUIRenderer.dll<br />OgreMain.dll<br />OIS.dll<br />Plugin_BSPSceneManager.dll<br />Plugin_CgProgramManager.dll<br />Plugin_OctreeSceneManager.dll<br />Plugin_ParticleFX.dll<br />RenderSystem_Direct3D9.dll<br />RenderSystem_GL.dll
<p>También necesitamos modificar el archivo resources.cfg para que pueda encontrar los archivos de recursos (modelos, texturas, shaders, etc.) este archivo es un simple archivo de texto que podemos abrir con el bloc de notas o cualquier otro editor de texto, y vamos a sustituir los path relativos por path absolutos para evitarnos de problemas de que no encuentre algún archivo de recursos, en mi caso sustituí todos los &#8220;../../../&#8221; por &#8220;C:/ogre/Samples/&#8221; quedándome el contenido así:</p>
<p><code>
<pre># Resource locations to be added to the 'boostrap' path
# This also contains the minimum you need to use the Ogre example framework
[Bootstrap]
Zip=C:/ogre/Samples/Media/packs/OgreCore.zip

# Resource locations to be added to the default path
[General]
FileSystem=C:/ogre/Samples/Media
FileSystem=C:/ogre/Samples/Media/fonts
FileSystem=C:/ogre/Samples/Media/materials/programs
FileSystem=C:/ogre/Samples/Media/materials/scripts
FileSystem=C:/ogre/Samples/Media/materials/textures
FileSystem=C:/ogre/Samples/Media/models
FileSystem=C:/ogre/Samples/Media/overlays
FileSystem=C:/ogre/Samples/Media/particle
FileSystem=C:/ogre/Samples/Media/gui
FileSystem=C:/ogre/Samples/Media/DeferredShadingMedia
Zip=C:/ogre/Samples/Media/packs/cubemap.zip
Zip=C:/ogre/Samples/Media/packs/cubemapsJS.zip
Zip=C:/ogre/Samples/Media/packs/dragon.zip
Zip=C:/ogre/Samples/Media/packs/fresneldemo.zip
Zip=C:/ogre/Samples/Media/packs/ogretestmap.zip
Zip=C:/ogre/Samples/Media/packs/skybox.zip</pre>
<p></code></p>
<p>Finalmente añadimos un archivo nuevo a nuestro proyecto de Visual Studio con la opción &#8220;Agregar Nuevo elemento / Archivo C++&#8221;. este archivo deberá tener una estructura parecida a la siguiente:</p>
<p><code>
<pre>#include &lt;Ogre.h&gt;
// Las siguientes lineas solo las necesitas para los Tutoriales del Wiki
// una vez que hayas aprendido lo basico, se recomienda crear tu propio Framework
#include &lt;ExampleApplication.h&gt;
#include &lt;ExampleFrameListener.h&gt;

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
//Si utilizas el modo consola, cambia la linea anterior por la siguiente
//int main(int argc, char **argv)
#endif
{
	return 0;
}
</pre>
<p></code></p>
<p> Y listo! Finalmente tenemos configurado un proyecto para utilizar OGRE.</p>
<p>Como comentario final, recomiendo trabajar con la versión Release de OGRE, ya que la versión Debug es mas lenta, y generalmente no la necesitaremos, a menos que queramos depurar dentro del código fuente de OGRE, pero esto no significa que no podamos depurar nuestro programa, aun lo podemos hacer, solo que si hay un error interno en OGRE, no podremos encontrar la línea exacta de este, pero este caso es raro, por lo general, si hay algún error es por parte nuestra y no del código de OGRE <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p><strong>Nota:</strong> Si no les aparece el directorio del ejecutable para que copien las dll y los archivos de configuración de OGRE, y que además puedan indicar el directorio de trabajo para la depuración, hagan una compilación (generar solución) para que el directorio sea creado, y entonces si podrán hacerlo. O creen el directorio manualmente.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=31&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/07/19/configurar-un-proyecto-en-vc-2008-para-ogre/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Compilacion de OGRE utilizando el C&#243;digo Fuente</title>
		<link>http://profesorx.wordpress.com/2008/07/18/compilacion-de-ogre-utilizando-el-cdigo-fuente/</link>
		<comments>http://profesorx.wordpress.com/2008/07/18/compilacion-de-ogre-utilizando-el-cdigo-fuente/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 01:15:03 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/07/18/compilacion-de-ogre-utilizando-el-cdigo-fuente/</guid>
		<description><![CDATA[En el artículo Nociones Básicas Sobre OGRE mencionaba que necesitabas tener OGRE compilado, pero no había ningún tutorial para para hacerlo, así que ahora lo publico, disculpen si esto les ocasiono algún problema. Sigue leyendo el artículo para ver la guía completa 1. Descarga los paquetes necesarios de la siguiente dirección, en la parte que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=21&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En el artículo <a href="http://profesorx.wordpress.com/2007/11/05/nociones-basicas-sobre-ogre-parte-1/">Nociones Básicas Sobre OGRE</a> mencionaba que necesitabas tener OGRE compilado, pero no había ningún tutorial para para hacerlo, así que ahora lo publico, disculpen si esto les ocasiono algún problema.</p>
<p>Sigue leyendo el artículo para ver la guía completa</p>
<p><span id="more-21"></span>1. Descarga los paquetes necesarios de la siguiente dirección, en la parte que dice Current Stable, son dos paquetes, Ogre Source For Windows y&nbsp; Visual C++ .NET 2008 precompiled dependencies:
</p>
<p><a title="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=412&amp;Itemid=132" href="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=412&amp;Itemid=132">http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=412&amp;Itemid=132</a></p>
<p>Enlaces directos en caso de que no sepas cual bajar <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a title="http://downloads.sourceforge.net/ogre/ogre-v1-6-0.zip" href="http://downloads.sourceforge.net/ogre/ogre-v1-6-0.zip">http://downloads.sourceforge.net/ogre/ogre-v1-6-0.zip</a></p>
<p><a title="http://downloads.sourceforge.net/ogre/OgreDependencies_VC9_Eihort_20080203.zip" href="http://downloads.sourceforge.net/ogre/OgreDependencies_VC9_Eihort_20080203.zip">http://downloads.sourceforge.net/ogre/OgreDependencies_VC9_Eihort_20080203.zip</a></p>
<p>2. <strong>Descomprimir</strong> los archivos descargados anteriormente en tu disco duro, el archivo de dependencias debes <strong>descomprimirlo en la misma carpeta</strong> en que se encuentre OGRE</p>
<p>3. Descarga e instala Direct X SDK 9.0 en su ultima versión de la siguiente dirección (esto solamente si piensas utilizar el Render para Direct X, OpenGL no lo necesita, es una descarga grande, como 400 MB:</p>
<p><a title="http://msdn.microsoft.com/directx" href="http://msdn.microsoft.com/directx">http://msdn.microsoft.com/directx</a></p>
<p>Por lo regular al instalar DirectX se configura automáticamente, en caso de no ser así, quizás tengamos que añadir manualmente los directorios manualmente, podemos verificarlo en el menú Herramientas/ Opciones/ Proyectos y soluciones/ Directorios de Visual C++</p>
<p>Archivos de inclusión:</p>
<p>C:\Archivos de programa\Microsoft DirectX SDK (March 2008)\Include</p>
<p>Archivos de biblioteca:</p>
<p>C:\Archivos de programa\Microsoft DirectX SDK (March 2008)\Lib\x86</p>
<p>Si no aparece lo anterior, debemos añadirlo, el nombre del directorio puede cambiar ligeramente según la versión de DirectX SDK que hayan descargado, en mi caso, tengo la de marzo del 2008.</p>
<p>4. Abre el archivo ogre\Ogre_vc9.sln en visual Studio 2008, </p>
<p>5. Compilamos finalmente la solución, con Generar/Generar Solucion (F7), un detalle, recomiendo que compiles en modo release, a menos que necesites depurar el código fuente de OGRE, cosa que no recomiendo mucho ya que la ejecución será mas lenta.</p>
<p>Espero que esta información les sea de utilidad <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Actualizado 10/Nov/2008:</strong> Actualizado los enlaces y las instrucciones, para utilizar la versión más reciente de OGRE (1.6.x), además de aclarar específicamente que debes descomprimir los archivos de OGRE, para aquellos que no lo pudieron deducir <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/21/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/21/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=21&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/07/18/compilacion-de-ogre-utilizando-el-cdigo-fuente/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>&#161;OGRE Versi&#243;n 1.4.6 [Eihort] Liberado!</title>
		<link>http://profesorx.wordpress.com/2008/01/04/ogre-versin-146-eihort-liberado/</link>
		<comments>http://profesorx.wordpress.com/2008/01/04/ogre-versin-146-eihort-liberado/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 01:16:41 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[OGRE]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2008/01/04/ogre-versin-146-eihort-liberado/</guid>
		<description><![CDATA[El equipo de desarrollo de OGRE nos obsequia con una nueva versión de mantenimiento de este motor gráfico, preparándonos para la nueva rama estable Shoggoth, lo más remarcable de esta versión es que se han actualizado las dependencias a las siguientes versiones: Freetype 2.3.5 Cg 2.0 FreeImage 3.10.0 Si quieres una lista completa de las [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=11&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El equipo de desarrollo de OGRE nos obsequia con una <a href="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=406&amp;Itemid=149">nueva versión de mantenimiento</a> de este motor gráfico, preparándonos para la nueva rama estable Shoggoth, lo más remarcable de esta versión es que se han actualizado las dependencias a las siguientes versiones:</p>
<p>Freetype 2.3.5 <br />Cg 2.0 <br />FreeImage 3.10.0 </p>
<p>Si quieres una lista completa de las correcciones que incluye esta versión de mantenimiento, visita la <a href="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=451&amp;Itemid=97">página de noticias de OGRE</a>. Que esperas para <a href="http://www.ogre3d.org/index.php?option=com_content&amp;task=view&amp;id=406&amp;Itemid=149">descargarlo</a> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=11&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2008/01/04/ogre-versin-146-eihort-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual Studio Express 2008 Liberado!!!</title>
		<link>http://profesorx.wordpress.com/2007/11/21/visual-studio-express-2008-liberado/</link>
		<comments>http://profesorx.wordpress.com/2007/11/21/visual-studio-express-2008-liberado/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 21:41:17 +0000</pubDate>
		<dc:creator>profesorx</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://profesorx.wordpress.com/2007/11/21/visual-studio-express-2008-liberado/</guid>
		<description><![CDATA[Ya ha sido liberado el Visual Studio Express 2008 (antes orcas), por el momento en ingles, pero supongo que pronto lo liberaran en español. Lo mejor de todo es que esta disponible un DVD ISO que te permite instalar toda la suite (Basic, C#, C++, Web Developer, SQL Express) fuera de línea.Lo bajare para probarlo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=10&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ya ha sido liberado el Visual Studio Express 2008 (antes orcas), por el momento en ingles, pero supongo que pronto lo liberaran en español. Lo mejor de todo es que esta disponible un DVD ISO que te permite instalar toda la suite (Basic, C#, C++, Web Developer, SQL Express) fuera de línea.<br />Lo bajare para probarlo <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
<p><a href="http://www.microsoft.com/express/download/">Visual Studio Express 2008</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/profesorx.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/profesorx.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/profesorx.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/profesorx.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/profesorx.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=profesorx.wordpress.com&amp;blog=1678105&amp;post=10&amp;subd=profesorx&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://profesorx.wordpress.com/2007/11/21/visual-studio-express-2008-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5a4de46f11760a9db0dff9df31204e21?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">profesorx</media:title>
		</media:content>
	</item>
	</channel>
</rss>
