Das hängt davon ab, ob Sie eine Engine für ein Spiel entwerfen möchten, das in drei Jahren oder in einem Jahr oder in sechs Monaten erstellt werden soll, und ob Sie an Konsolenports denken oder nicht. Es wird relativ einfach sein, eine 360-Portierung Ihres Spiels von Direct3D9 aus zu entfernen, aber Sie müssen noch viel mehr von D3D11 aus tun. Denken Sie daran, dass D3D11 alle XP-Benutzer sperrt, wenn nicht unbedingt die gesamte D3D9-Hardware.
Die jüngste Steam-Umfrage ergab, dass etwa 16% der Benutzer noch Windows XP verwenden. Können Sie es sich leisten, sie auszuschneiden? Wie wird sich das ändern, wenn Ihr Spiel fertig ist? Werden Sie Funktionen verwenden, die von der höheren API-Ebene abhängen? Dies sind Fragen, die Sie selbst beantworten müssen.
Direct3D 9 ist verdammt leicht zugänglich und man kann mit einem D3D9-Spiel viele Leute erreichen, aber die Tage sind gezählt, besonders auf dem PC. Wenn Sie nicht daran interessiert sind, diese Leute anzugreifen, hat das wenig Sinn.
Oh, und kümmere dich nicht um DX10. Es gibt überhaupt keinen Grund, es über DX11 zu verwenden. Es sei denn, Sie möchten D2D / DirectWrite verwenden, was nicht unangemessen ist.
Natürlich ist es erwähnenswert, dass es in DX11 keinen Ersatz für Klassen gibt, die ich als Bastler in DX9 äußerst nützlich fand. ID3DXMesh, ID3DXSprite, ID3DXFont usw. müssen ID3DXEffect aus dem Quellcode kompilieren. Microsoft empfiehlt DirectWrite, ID3DXFont zu ersetzen, aber sie haben natürlich vergessen, DX11 tatsächlich mit den neuen Direct2D / DirectWrite-Systemen kompatibel zu machen, was meiner Meinung nach verblüffend dumm war .