Chasing DirectX versions

1

Siamo un'impresa di piccole-medie dimensioni (circa 50 sviluppatori) che lavorano su diverse applicazioni DirectX 9. ( non giochi)

DirectX 10 e 11 erano entrambi revisioni dell'interfaccia profonda, come probabilmente lo sarà DX12. Non abbiamo eseguito l'aggiornamento a nessuno di essi, e dal momento che VS2013 (che ora sta migrando) che funziona con DX9 si sta rivelando molto scomodo, mentre DX9 non è tecnicamente deprecato, MS sta spingendo molto attivamente gli sviluppatori.

Mi chiedo, in che modo altri negozi di sviluppo gestiranno l'instabilità dell'interfaccia DX? Stai effettivamente riscrivendo il tuo motore grafico ogni ~ 2-3 anni? Stai usando un middleware di terze parti? Sia OGRE che Unity sembrano tonnellate di codice, hanno obiettivi di progettazione a cui non mi interessa (multipiattaforma) e non sono nemmeno sicuro che la loro interfaccia sia più stabile. Ci sono altri modi che mi mancano?

Nota importante: Non stiamo sviluppando giochi AAA, e non abbiamo molta utilità per gli shaders di fantasia o la necessità di spremere ogni bit delle prestazioni dall'hardware moderno . I nostri prodotti mostrano solo i dati principalmente in 3D.

sembra che alcuni chiarimenti siano in ordine. Lo stato attuale dello sviluppo della grafica è che MS ha un'interfaccia DX completamente revisionata all'incirca ogni 2-3 anni. Sembra che, deliberatamente o meno, si rivolgono ai principali negozi di giochi (o persino ai negozi di videogame), che dedicheranno volentieri le risorse umane necessarie a riscrivere il motore grafico 3D per conformarsi al meglio.

Il nostro negozio (e ne sospetto molti altri) non è così. Presentiamo molti dati in 3D, ma non utilizziamo shader esotici e non ci interessano le ultime console o GPU. Non ha senso per noi riscrivere il nostro motore di rendering per nuove funzionalità che non ci interessano - eppure i vecchi motori stanno diventando obsoleti velocemente. Un DX dev di MS scrive :

the ability to support a Direct3D 9 application at all is diminished on the latest versions of Windows, and that's likely to continue

Per quanto riguarda D3DX - anche se non tecnicamente deprecato, è molto difficile lavorare con VS2013. Citazione diplomatica MSDN :

Investigate alternate solutions for working with the Direct3D API.

Sono curioso: come sono gestiti altri negozi con esigenze 3D simili? ad esempio, come state facendo voi ragazzi nel settore CAD?

    
posta Ofek Shilon 30.07.2014 - 16:57
fonte

1 risposta

1

Direct3D cambia frequentemente perché l'hardware grafico è in continua evoluzione. Quindi, a un certo punto, Microsoft non può più mantenere la compatibilità con le versioni D3D precedenti. Questo è il motivo per cui il rendering a funzione fissa è sparito. L'hardware più recente non lo supporta, quindi non può più essere esposto nell'API.

Ora, da quello che hai spiegato, l'uso del 3D non sembra molto impegnativo, il che probabilmente significa che potresti scrivere un piccolo livello di interfaccia per isolare la tua applicazione dal back-end di rendering. Se si progetta bene l'interfaccia di rendering, la quantità di codice effettivamente dipendente dalle API è molto piccola. Anche per un motore di gioco di grandi dimensioni come Ogre3D, se si guarda il codice sorgente nella cartella specifica dell'API, vedrete che è composto da una dozzina di file. Probabilmente meno dell'1% del codice del progetto.

Con un livello di interfaccia tra l'API di rendering e l'applicazione è possibile aggiungere l'emulazione del software in futuro se una funzionalità hardware scompare. Es .: simula la pipeline fissa con gli shader; Quindi, forse, usa l'opportunità di modifica dell'API per un eventuale refactoring del modulo di rendering in modo da renderlo agnostico all'API in modalità.

    
risposta data 31.07.2014 - 03:13
fonte

Leggi altre domande sui tag