Respuestas a las preguntas más frecuentes sobre cómo migrar juegos a Plataforma universal de Windows (UWP).
¿La migración de mi juego va a ser un conjunto de operaciones de búsqueda y reemplazo en métodos de API, o necesito planear un proceso de portabilidad más cuidadoso?
Direct3D 11 es una actualización significativa de Direct3D 9. Hay varios cambios de paradigma, incluidas las API independientes para el adaptador de gráficos virtualizados y su contexto, así como una nueva capa de polimorfismo para los recursos del dispositivo. El juego todavía puede usar hardware gráfico de la misma manera, pero tendrás que aprender sobre la nueva arquitectura de la API de Direct3D 11 y actualizar cada parte del código gráfico para usar los componentes de API correctos. Consulte Migración de conceptos y consideraciones.
¿Para qué sirve el nuevo contexto de dispositivo? ¿Se supone que debo reemplazar mi dispositivo Direct3D 9 por el dispositivo Direct3D 11, el contexto del dispositivo o ambos?
El dispositivo Direct3D ahora se usa para crear recursos en la memoria de vídeo, mientras que el contexto del dispositivo se usa para establecer el estado de canalización y generar comandos de representación. Para obtener más información, consulta: ¿Cuáles son los cambios más importantes desde Direct3D 9?
¿Tengo que actualizar mi temporizador de juego para UWP?
QueryPerformanceCounter, junto con QueryPerformanceFrequency, sigue siendo la mejor manera de implementar un temporizador de juego para aplicaciones para UWP.
Debes tener en cuenta un matiz con temporizadores y el ciclo de vida de la aplicación para UWP. Suspender/reanudar es diferente de un jugador que vuelve a iniciar un juego de escritorio porque el juego reanudará una instantánea en el tiempo desde el momento en que se jugó por última vez. Si ha transcurrido una gran cantidad de tiempo (por ejemplo, unas semanas), es posible que algunas implementaciones del temporizador del juego no se comporten correctamente. Puedes usar eventos de ciclo de vida de la aplicación para restablecer el temporizador cuando se reanude el juego.
Los juegos que todavía usan la instrucción RDTSC deben actualizarse. Consulta Control de tiempo de juego y procesadores de varios núcleos.
Mi código de juego se basa en D3DX y DXUT. ¿Hay algo disponible que pueda ayudarme a migrar mi código?
El proyecto de comunidad DirectX Tool Kit (DirectXTK) ofrece clases auxiliares para su uso con Direct3D 11.
Cómo mantener rutas de acceso de código para el escritorio y Microsoft Store?
La serie de artículos de Chuck Walbourn titulada Técnicas de codificación de doble uso para juegos ofrece instrucciones sobre el uso compartido de código entre el escritorio y las rutas de acceso de código de Microsoft Store.
Cómo cargar recursos de imagen en mi aplicación para UWP de DirectX?
Hay dos rutas de acceso de API para cargar imágenes:
- La canalización de contenido convierte imágenes en archivos DDS usados como recursos de textura de Direct3D. Consulta Usar recursos 3D en tu juego o aplicación.
- El componente de imágenes de Windows se puede usar para cargar imágenes de diversos formatos y se puede usar para mapas de bits de Direct2D, así como para los recursos de textura de Direct3D.
También puede usar DDSTextureLoader y WICTextureLoader, desde DirectXTK o DirectXTex.
¿Dónde está el SDK de DirectX?
El SDK de DirectX se incluye como parte de Windows SDK. El SDK de DirectX más reciente que era independiente del SDK de Windows fue en junio de 2010. Los ejemplos de Direct3D se encuentran en la Galería de código junto con el resto de los ejemplos de aplicaciones de Windows.
¿Qué ocurre con los redistribuibles de DirectX?
La gran mayoría de los componentes de Windows SDK ya están incluidos en versiones compatibles del sistema operativo o no tienen ningún componente DLL (como DirectXMath). Todos los componentes de la API de Direct3D que las aplicaciones para UWP pueden usar ya estarán disponibles para tu juego; no es necesario redistribuirlos.
Las aplicaciones de escritorio win32 siguen usando DirectSetup, por lo que si también estás actualizando la versión de escritorio del juego, consulta Implementación de Direct3D 11 para desarrolladores de juegos.
¿Hay alguna manera de actualizar mi código de escritorio a DirectX 11 antes de alejarse de Effects?
Consulta los efectos de la actualización de Direct3D 11. Efectos 11 ayuda a quitar dependencias en encabezados heredados del SDK de DirectX; está pensado para su uso como ayuda de portabilidad y solo se puede usar con aplicaciones de escritorio.
¿Hay una ruta de acceso para migrar mi juego directX 8 a UWP?
Sí:
- Lee Conversión a Direct3D 9.
- Asegúrate de que tu juego no tenga restos de la canalización fija; consulta Características en desuso.
- A continuación, tome la ruta de migración de DirectX 9: Puerto de D3D 9 a UWP.
¿Puedo migrar mi juego DirectX 10 o 11 a UWP?
Los juegos de escritorio directX 10.x y 11 son fáciles de migrar a UWP. Consulte Migración a Direct3D 11.
Cómo elegir el dispositivo de visualización adecuado en un sistema de varios monitores?
El usuario selecciona en qué monitor se muestra la aplicación. Deje que Windows proporcione el adaptador correcto llamando a D3D11CreateDevice con el primer parámetro establecido en nullptr. A continuación, obtenga la interfaz IDXGIDevice del dispositivo, llame a GetAdapter y use el adaptador DXGI para crear la cadena de intercambio.
Cómo activar suavizado?
El suavizado de suavizado (muestreo múltiple) se habilita al crear el dispositivo Direct3D. Para enumerar la compatibilidad con el muestreo múltiple, llame a CheckMultisampleQualityLevels y, a continuación, establezca las opciones multisample en la estructura DXGI_SAMPLE_DESC al llamar a CreateSurface.
Mi juego se representa mediante multithreading o representación diferida. ¿Qué necesito saber para Direct3D 11?
Visite Introducción a Multithreading en Direct3D 11 para empezar. Para obtener una lista de las diferencias clave, consulte Diferencias de subprocesos entre versiones de Direct3D. Tenga en cuenta que la representación diferida usa un contexto diferido del dispositivo en lugar de un contexto inmediato.
¿Dónde puedo leer más sobre la canalización programable desde Direct3D 9?
Visite los temas siguientes:
¿Qué debo usar en lugar del formato de archivo .x para mis modelos?
Aunque no tenemos un reemplazo oficial para el formato de archivo .x, muchos de los ejemplos usan el formato SDKMesh. Visual Studio también tiene una canalización de contenido que compila varios formatos populares en archivos CMO que se pueden cargar con código desde el kit de inicio de Visual Studio 3D o cargado mediante DirectXTK.
Cómo depurar mis sombreadores?
Microsoft Visual Studio incluye herramientas de diagnóstico para gráficos DirectX. Consulte Depuración de gráficos directX.
¿Cuál es el equivalente de Direct3D 11 para la función x?
Consulte la asignación de funciones proporcionada en Map DirectX 9 features to DirectX 11 APIs (Asignación de características de DirectX 9 a las API de DirectX 11).
¿Cuál es el DXGI\_FORMAT equivalente del formato de superficie y?
Consulte la asignación de formato de superficie proporcionada en Las características de Map DirectX 9 a las API de DirectX 11.