¿Qué es un perfil?

XNA Game Studio 4.0
Un perfil es un conjunto de funciones que se implementan en hardware. Cada perfil Reach implementa Shader Model 2.0 HLSL (lenguaje de sombreador de alto nivel) y el perfil HiDef implementa Shader Model 3.0 HLSL.

Con anterioridad a XNA Game Studio 4.0, XNA Framework exponía conjuntos de funciones y comportamientos que variaban para cada plataforma (Windows y Xbox 360). Estos conjuntos de funciones y comportamientos se implementaron en tiempo de ejecución como núcleo común de funcionalidad en todas las plataformas, así como funcionalidad específica de plataforma. Esto requería desarrollar y realizar pruebas a código dependiente de plataforma para cada plataforma.

Con el fin de simplificar el desarrollo multiplataforma, XNA Game Studio 4.0 crea un perfil. Un perfil es independiente de la plataforma, por lo que no es necesario consultar los bits de capacidad. Las API para obtener acceso a las funciones implementadas en hardware son coherentes en todas las plataformas, por lo que el código de juego escrito para una plataforma se compilará y ejecutará en otra plataforma con pocos cambios o ninguno. Un juego no se ejecutará si un dispositivo de hardware no cumple los requisitos de perfil.

Puede configurar el perfil en tiempo de diseño usando la página de propiedades de XNA Game Studio en Microsoft Visual Studio 2010 Express for Windows Phone o puede configurar un perfil en tiempo de ejecución con la propiedad GraphicsProfile. Para obtener más información, vea Selecting Reach vs. HiDef.

Existen dos tipos de perfil, Reach y HiDef: uno para hardware repleto de funciones y de alta potencia, y uno para hardware con menos funciones y disponible en cualquier lugar. Reach está diseñado para ofrecer cobertura general a todas las plataformas y cuenta con un conjunto limitado de capacidades y funciones gráficas implementadas en hardware. Este perfil está diseñado para admitir la variedad más amplia de dispositivos, más concretamente equipos basados en Windows, una Xbox 360, y Windows Phone. Reach acelera drásticamente la escritura de juegos multiplataforma, puesto que puede diseñar y depurar código de juego con la seguridad de que se ejecutará en otras plataformas. El rendimiento depende de la disponibilidad de hardware de cada plataforma.

El perfil HiDef está diseñado para el nivel más alto de rendimiento y el conjunto más amplio de funciones gráficas disponibles. Use el perfil HiDef para hardware con capacidades gráficas mejoradas, tales como una Xbox 360 y un equipo basado en Windows con al menos una GPU DirectX 10. Más concretamente, el perfil HiDef requiere una GPU con capacidades de nivel Xbox 360, tales como varios destinos de representación (MRT), formatos de superficie de punto flotante y capturas de texturas por vértice. Se trata de capacidades opcionales en hardware DirectX 9, pero todas son necesarias para admitir HiDef. Dado que las tarjetas gráficas DirectX 9 no son necesarias para admitir estas funciones, resulta más sencillo afirmar que el perfil HiDef requiere al menos una GPU compatible con DirectX 10. Un juego HiDef se ejecutará en una tarjeta DirectX 9 si implementa las funciones llamadas DirectX 10.

Si trata de ejecutar un juego HiDef en un dispositivo (como, por ejemplo, un dispositivo Windows Phone) que no sea compatible con HiDef, se produce una excepción en tiempo de ejecución. Además, si intenta obtener acceso a funciones HiDef desde un juego compilado para un perfil Reach, el tiempo de ejecución produce una excepción. Para consultar qué perfiles admite el hardware de destino, llame a GraphicsAdapter.IsProfileSupported Método.

Comparación entre Reach y HiDef

A continuación, se presentan las diferencias entre los perfiles Reach y HiDef. Para obtener más detalles, vea las secciones que siguen a la tabla.

PerfilesAlcanzarHiDef
PlataformasWindows Phone 7, Xbox 360 y cualquier equipo que ejecute Windows con una GPU DirectX 9 que admita al menos Shader Model 2.0.Xbox 360 y cualquier equipo basado en Windows con al menos una GPU DirectX 10 (o equivalente). Para obtener más información, vea el párrafo anterior.
Modelo de sombreador2.0 (Windows Phone, sin embargo, no admite sombreadores personalizados.)3.0 (Xbox 360 admite ampliaciones de sombreador personalizado, tales como vfetch que no están disponibles en Windows.)
Tamaño máximo de textura2,0484,096
Tamaño máximo del mapa cúbico5124,096
Tamaño máximo de textura de volumenNo se admiten texturas de volumen.256
Texturas que no sean potencias de dosSí, con limitaciones: sin modo de direccionamiento de ajuste, sin mipmaps, sin compresión DXT en texturas que no sean potencias de dos.
Mapas cúbicos que no sean potencias de dosNo
Texturas de volumen que no sean potencias de dosNo se admiten texturas de volumen.
Número máximo de primitivos por llamada de dibujo65,5351,048,575
Número máximo de secuencias de vértices1616
Número máximo de intervalos de secuencias de vértices25255
Formatos de búfer de índices16 bits16 y 32 bits
Formatos de elementos de vérticesColor, Byte4, Single, Vector2, Vector3, Vector4, Short2, Short4, NormalizedShort2, NormalizedShort4Todos los formatos de elementos de vértices de Reach, así como HalfVector2 y HalfVector4.
Formatos de texturaColor, Bgr565, Bgra5551, Bgra4444, NormalizedByte2, NormalizedByte4, Dxt1, Dxt3, Dxt5 Todos los formatos de textura de Reach, así como Alpha8, Rg32, Rgba64, Rgba1010102, Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4. Los formatos de textura de punto flotante no admiten filtrado.
Formatos de textura de vérticesNo se admite el texturizado de vértices.Single, Vector2, Vector4, HalfSingle, HalfVector2, HalfVector4
Formatos de destino de representaciónLlame a QueryRenderTargetFormat para averiguar lo que se admite.Llame a QueryRenderTargetFormat para averiguar lo que se admite.
Varios destinos de representaciónNoUn máximo de cuatro. Todos deben tener la misma profundidad en bits. Se admiten máscaras de escritura independientes y la combinación alfa por destino de representación.
Consultas de oclusiónNo
Combinación alfa independienteNo

Modelo de sombreador

El perfil Reach admite Shader Model 2.0 HLSL y los efectos configurables para todas las plataformas. Windows Phone no admite sombreadores personalizados.

El perfil HiDef admite Shader Model 3.0 HLSL. Xbox 360 también admite ampliaciones de sombreador personalizado, tales como capturas de vértices (vfetch).

Texturas

En la tabla que compara los dos perfiles se muestran las limitaciones de tamaño de las texturas. Estos números corresponden al ancho máximo o a la altura máxima de una textura que el perfil puede consumir. HiDef admite texturas de volumen y texturas de mayor tamaño.

HiDef admite las siguientes funciones sin limitaciones; Reach admite las siguientes funciones únicamente para texturas que sean potencias de dos:

  • Modo de direccionamiento de textura wrap
  • Mipmaps
  • Compresión DXT

Formatos

Muchos formatos antiguos de versiones anteriores de XNA Game Studio se eliminaron de XNA Game Studio 4.0.

  • Estos formatos de elementos de vértices ya no son compatibles:

    • Rg32
    • Rgba32
    • Rgba64
    • UInt101010
    • Normalized101010
  • Estos formatos de textura ya no son compatibles:

    • Dxt2
    • Dxt4
    • Bgr555
    • Bgr444
    • Bgra2338
    • Bgr233
    • Bgr24
    • Bgr32
    • Bgra1010102
    • Rgba32
    • Rgb32
    • NormalizedShort2
    • NormalizedShort4
    • Luminance8
    • Luminance16
    • LuminanceAlpha8
    • LuminanceAlpha16
    • Palette8
    • PaletteAlpha16
    • NormalizedLuminance16
    • NormalizedLuminance32
    • NormalizedAlpha1010102
    • NormalizedByte2Computed
    • VideoYuYv
    • Video UyVy
    • VideoGrGb
    • VideoRgBg
    • Multi2Bgra32

Existe una amplia variedad de formatos de destino de representación. Llame a GraphicsAdapter.QueryRenderTargetFormat Método para consultar la compatibilidad del hardware. El tiempo de ejecución también posee un mecanismo de retroceso integrado si el formato que solicita no está disponible. Los parámetros de formato usados al crear destinos de representación y búferes de reserva ahora se denominan "preferredFormat" en lugar de "format". El tiempo de ejecución intentará crear un recurso con el formato exacto entregado y retrocederá hasta la posible coincidencia más cercana (en función de la similitud en profundidad en bits, número de canales, etc.) si el formato no está disponible. Por ejemplo, si ejecuta un juego Reach en un dispositivo de Windows Phone con un formato de destino de representación de 16 bits y, a continuación, ejecuta el juego en una Xbox 360 que no admite destinos de representación de 16 bits, el tiempo de ejecución cambiará el formato de destino de representación a un formato Color.

XNA Game Studio 4.0 cambia la estructura Color de orden de bytes BGRA a RGBA. La mayoría de los juegos no notarán nunca el cambio, puesto que se modificaron tanto la estructura Color como el código de creación de declaración de vértices y texturas. Si dispone de código que crea texturas de formato Color directamente, al configurar su contenido desde una matriz de bytes en lugar de desde un Color[] con establecimiento inflexible, deberá cambiar el orden de sus canales rojo y azul.

Conclusión

XNA Game Studio ha introducido el perfil Reach para Xbox 360, Windows y dispositivos de Windows Phone, y el perfil HiDef para Xbox 360 y dispositivos de Windows. El perfil HiDef incluye un supraconjunto estricto de la funcionalidad en el perfil Reach, lo que significa que HiDef implementa todas las funcionalidades de Reach y mucho más. Si ejecuta un juego Reach en una plataforma HiDef, la estructura exigirá reglas Reach. Saque partido a esto al desarrollar un juego multiplataforma. Puede diseñar y depurar en el hardware más potente con la seguridad de que el juego se compilará y ejecutará en otras plataformas menos potentes cuando esté listo para probar el juego. El tiempo de ejecución producirá una excepción si trata de establecer el perfil a HiDef en hardware que no admita HiDef, o si ejecuta un juego de perfil Reach que intente obtener acceso a funciones de HiDef.

Obras citadas

"Selecting Reach vs. HiDef." Shawn Hargreaves Blog. Julio de 2010. http://blogs.msdn.com/b/shawnhar/archive/2010/07/19/selecting-reach-vs-hidef.aspx (último acceso el 2 de agosto de 2010)

Adiciones de comunidad

AGREGAR
Mostrar: