[XNA] Cambios en la API gráfica de XNA4: adiós ResolveTexture2D

Lo cierto esque aunque todavía BETA, la nueva API de XNA 4 contiene algunos cambios que nos pueden hacer un poco la puñeta si estamos migrando un juego de XNA 3.1 a 4.0. Entre ellos, la desaparición e ResolveTexture2D. Esta clase podía usarse por ejemplo para hacer “capturas de pantalla”. ¿Para qué queremos hacer una captura de pantalla en un juego? Pues a mi se me ocurre que por motivos de depuración, y también para hacer efectos de fade-in y fade-out. Yo lo estaba usando en un proyecto personal para hacer fade-outs en los menús del juego. Pues bien, para quien no tenga muchas ganas de buscarse la vida, el código que nos permite capturar la pantalla en XNA 4 se basa en la modificación del RenderTarget y es el siguiente:

protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            RenderTarget2D render = new RenderTarget2D(GraphicsDevice,
                GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height,
                false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8);

            GraphicsDevice.SetRenderTarget(render);

            spriteBatch.Begin();
            spriteBatch.Draw(texture, Vector2.Zero, Color.White);
            spriteBatch.End();

            System.IO.FileStream fs = new System.IO.FileStream(@”archivo.png”, System.IO.FileMode.OpenOrCreate);

            GraphicsDevice.SetRenderTarget(null);
            render.SaveAsPng(fs, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);

            fs.Flush();        

            base.Draw(gameTime);
        } 

Como véis se trata de crear un nuevo RenderTarget, establecerlo en el Graphics Device, hacer el render, y volver a dejar el RenderTarget del GraphicsDevice a su estado previo, después de eso podemos hacer lo que queramos con la textura. Aquí claramente estoy guardando la textura como PNG, pero también podríais guardarla en un objeto textura (en Phone por ejemplo no podéis guardar una imagen en la C:, sí en el isolatedstorage pero eso sería otra historia),  Esto sería simplemente lo siguiente:

 Texture2D newTexture = render;

[XNA] Primeras pruebas con la beta de Windows Phone 7 Developer Tools

Hace un tiempo que estoy trabajando en secreto en la tecnología windows phone bajo la versión CTP (vaya se me escapó). Lo cierto es que uno de los problemas principales que tenía esa versión era el rendimiento: es horrible (y tampoco es que tenga una mala máquina). Así que, tube que olvidarme de hacer mucha cosa con esa versión del emulador. Con la salida hace pocos días de la versión BETA de Windows Phone 7 Developer Tools, lo primero que busqué fueron las mejoras en rendimiento. Y sorpresa ha sido la mía, ya que ha superado mis expectativas.

En este vídeo he grabado la ejecución de las demos del engine de físicas BepUPhysics Engine, uno de los pocos engines de física gratuitos que es compatible para WP7 desde la versión CTP.  Podéis verlo vosotros mismos, no está nada mal:

[View:http://www.youtube.com/watch?v=73J7Vi1X1o8:550:0]


Otras novedades interesantes de la BETA respecto la CTP

Las novedades de la versión Beta respecto la CTP son muchísimas, podéis consultarlas en las release notes, algunas que me han parecido más curiosas y/o interesantes:

  • Expression Blend 4 integrado y compatible con la Beta de las WPDT
  • Herramienta de registro, para probar la aplicación en un dispositivo físico antes de que la aplicación aparezca en el marketplace
  • Reestructuración de los namespaces
  • Nuevos controles para Silverlight

 

[webcast] Windows Phone 7 Jump Start. Cuatro sesiones de XNA y Silverlight para WP7!! (en inglés)

Con el reciente lanzamiento de la versión BETA de Windows Phone 7 (hasta ahora sólo teníamos una CTP) , el equipo de WP7 ha preparado una serie de sesiones formativas, en formato webcast, que no nos podemos perder, tanto los desarrolladores de aplicaciones “clásicas” como de videojuegos:

Session One – Getting Started with Microsoft Windows Phone 7 and Silverlight
https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032455932&EventCategory=2&culture=en-US&CountryCode=US

Session Two – Programming Game Applications with XNA
https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032455936&EventCategory=2&culture=en-US&CountryCode=US

Session Three – Programming Applications with Silverlight
https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032455937&EventCategory=2&culture=en-US&CountryCode=US

Session Four- Review and Wrap Up
https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032455938&EventCategory=2&culture=en-US&CountryCode=US

 

Nos vemos pronto!