He realizado una cantidad razonable de pequeños proyectos de pasatiempo con DirectX 9, pero ahora es el momento de pasar a DirectX 11.
Tengo Frank Luna'un libro sobre programación 3D usando DirectX 10 pero nada en DirectX 11. Creo que son bastante similares, pero me preguntaba si alguien podría enumerar las principales diferencias a nivel de código que tendré que tener en cuenta ( o apunte a una fuente existente).
Respuestas:
La documentación del SDK tiene una sección sobre la migración a 11 que cubre tanto de 9 como de 10. También está la página de características de D3D11 .
Uno de los cambios más importantes en términos de forma de API entre 10 y 11 es que 11 mueve un montón de métodos desde el propio dispositivo a una nueva interfaz llamada contexto del dispositivo (
ID3D11DeviceContext
específicamente), para admitir las nuevas características de subprocesamiento múltiple.Sin embargo, una vez que esté al tanto del cambio, es bastante fácil adaptarse a: donde lo habría hecho en 10 llamado "
someDevice->Draw()
" en su lugar obtendrá el contexto inmediato para el dispositivo y llamará "immediateContext->Draw()
.El otro gran cambio es que la API de efectos se extrae del núcleo y se hace una distribución fuente independiente que debe compilar y vincular. También puede observar algunas interfaces y funciones de D3DX que se han desaprobado o eliminado.
Más allá de eso, hay un puñado de nuevos parámetros para algunas funciones y un puñado de campos adicionales en estructuras, etc. Por ejemplo, el objeto de descripción del búfer en 11 tiene un
StructureByteStride
campo adicional que no está en 10 , y la creación del dispositivo implica pasar información de nivel de característica . Además, existen los cambios obvios y mencionados en los nombres de las interfaces (10 reemplazados por 11).fuente
Creo que la principal diferencia es que, en DX11, el DXFont se ha ido, aparte de eso, es más o menos como dijo notabene. Deberías estar bien con ese libro DX10. Lo usé cuando me mudé a DX11 y no tuve problemas. Sin embargo, tendrá que ir a ver el msdn de vez en cuando, hay algunas diferencias menores en la API en algunos lugares del IIRC.
fuente
No habrá necesidad de cambiar. Directx11 solo agrega nuevas funciones. Simplemente cambiará los números de ID3D10 a ID3D11, etc.
DirectX11 agrega (si no se habla de teselación HW publicitada) Computación directa: API para GPGPU, con una excelente conexión a la línea de tubería de gráficos (no puedo decir esto sobre CUDA o openCL). Y la posibilidad de múltiples texturas RW y buffers en un sombreador de píxeles, lo que abre muchas nuevas posibilidades.
fuente