Domanda

Il modello standard è che OpenGL è per le app professionali (CAD) e Direct3D è per i giochi.

Con la debacle di openGL 3.0, openGl è ancora la scelta naturale per le app 3D tecniche (cad / GIS)?
Esistono librerie di scenegraph per Direct3D?

(Naturalmente Direct3D è solo per Windows.)

È stato utile?

Soluzione

D3D ti fa pagare la "strategia fiscale" di Microsoft. " Cioè, D3D serve due padroni. Uno ti offre funzionalità e prestazioni. L'altro è garantire il blocco ad altri prodotti MS e alla piattaforma Windows in generale. Questo ha delle conseguenze per te:

  1. Un'app D3D non può essere eseguita su Windows, tranne Xbox (inclusa). Forse non pensi che sia importante ora. Ma se, lungo la strada, vuoi correre su Mac, Linux, PS3, console future, ecc., Potresti essere contento di aver scelto la scelta indipendente dalla piattaforma.

  2. Gli Stati membri possono prendere alcune decisioni arbitrarie. La prossima versione di D3D verrà eseguita solo su un sistema operativo che richiede nuovo hardware, è costoso e molte persone non vogliono eseguire l'aggiornamento? Prenderanno qualche altra decisione futura con cui non sei d'accordo?

  3. Storicamente, OpenGL ha guidato D3D in una rapida esposizione delle nuove funzionalità HW. Ciò è dovuto al fatto che esiste un meccanismo nello standard per consentire ai fornitori di aggiungere le proprie estensioni e che tali estensioni possano essere eventualmente integrate nelle specifiche principali. D3D è qualunque cosa MS voglia che sia, con certezza da parte dei fornitori, ma MS ottiene il potere di veto. Potresti facilmente trovarti in una situazione come quella di Vista, in cui MS ha deciso di non esporre le nuove funzionalità HW al vecchio DX e rendere disponibile il nuovo DX solo su Vista. Questo è stato piuttosto un mal di testa per gli sviluppatori di giochi.

Ora, questo è il motivo dei motivi per cui un'app professionale "quotata" (CAD, animazione, visualizzazione scientifica, GIS, ecc.) Favorirebbero OGL - le app come questa vogliono essere stabili per molti anni, necessitano di manutenzione e miglioramento continui e vogliono funzionare su molte piattaforme. Ciò è in contrasto con i giochi, che abbastanza frequentemente si trovano solo su una piattaforma, ma verranno generalmente "mantenuti". (probabilmente non ci sarà un 2.0, un aggiornamento per un altro SO tra tre anni, non è necessario supportare HW più vecchi, ecc.). I giochi vogliono le massime prestazioni e devono funzionare solo per un breve periodo di tempo e su un numero fisso di piattaforme. Se devono comunque indirizzare Windows e D3D è un po 'più veloce, questa potrebbe essere la scelta giusta poiché le conseguenze D3D negative non li danneggeranno come farebbe per un'app CAD, per esempio.

Altri suggerimenti

Come sempre, questo dipende dalla tua situazione.

Nella mia esperienza, attualmente (2008) la qualità del driver OpenGL su Windows è molto peggiore della qualità del driver Direct3D. Se la tua situazione è tale da non poter ragionevolmente chiedere ai tuoi clienti di avere sempre driver aggiornati o di dire loro di cambiare le loro schede grafiche con quelle che hanno migliori driver OpenGL, allora OpenGL è una scelta piuttosto sbagliata. In questo caso, sceglierei il renderer D3D su Windows e il renderer OpenGL su OS X / Linux (se devi supportare quelle piattaforme, cioè).

Avere due renderer non è così difficile; nella mia esperienza, lavorare sui bug del driver richiede molto più tempo che scrivere e supportare i percorsi del codice di rendering.

Naturalmente, ci sono alcune situazioni (specifiche) in cui D3D non ha le funzionalità necessarie, ad es. uscita genlock con quadruplo buffer; o il supporto di Shader Geometria su Windows XP.

Quindi in breve: se vuoi driver migliori su Windows, usa D3D. Se non ti interessa molto la qualità del driver o hai bisogno di funzionalità che sono in OpenGL ma non in D3D, usa OpenGL.

Forse dovresti provare un livello di astrazione come OGRE , che ti consente di passare da DirectX a OpenGL senza avere riscrivere qualcosa? Aggiunge anche molte funzionalità e non è orientato al gioco, ma piuttosto generico.

Questo non risponde direttamente alla tua domanda (scusa), ma ero uno dei ragazzi originali che lavoravano su Direct3D e hehe:

  

Ci sono librerie di scenegraph per   Direct3D?

Direct3D (nata Reality Lab) era solo una libreria di sceneggiature :-)

Peccato che la modalità di conservazione di Direct3D non sia più spedita ...

Direct3D è disponibile solo su Windows e XBox. Se hai intenzione di scegliere come target Unix o Mac, oltre a Windows, OpenGL è una buona scelta.

Per me, parlando come programmatore grafico in una grande azienda CAD, attualmente ci sono tre cose che mantengono OpenGL di essere abbandonato a favore di Direct3D (10/11) per le applicazioni CAD / DCC esistenti:

  1. Legacy . La maggior parte dei software CAD sono più o meno difficilmente serrati Concetti OpenGL. Riscrivere tutto intorno alla filosofia D3D non è sempre gestibile (tecnicamente parlando e a seconda della capacità / volontà del società per lanciare risorse).

    In secondo luogo potrebbe avere un aspetto negativo influisce se qualcosa va storto (parlando di funzionalità e / o dal punto di vista delle prestazioni) e la società non correrebbe il rischio di ritardare una versione principale a causa di un cambio API e architettura.

  2. Popoli . Popoli in quelle industrie dei vecchi sono abbastanza conservatori. Preferiscono spendere soldi / tempo per affrontare IHV riguardanti tutti i driver OpenGL problemi che potrebbero avere o semplicemente non raccomandare di utilizzare la grafica di un IHV specifico (ad esempio Intel o ATI).

    Inoltre, credo che i clienti del settore automobilistico / aerospaziale come Boeing, Airbus, TMC, BMW, ecc non importa così tanto di avere Solo workstation Quadros. Hardware è ancora economico per quanto riguarda il software prezzi delle licenze.

  3. Tendenze future . Con il futuro generazione di processori come Llano, Larrabee, Fermi e prodotti che seguirà, ne vale sicuramente la pena investire budget R & amp; D su come programmare e sviluppare nuovi lingue / API / framework per quei futuri hardware (in termini di grafica e attività non grafiche).

    L'industria CAD ha enormi cicli e non si muoveranno se non per una tecnologia davvero dirompente. Quindi potrebbe D3D arriva solo un po 'in ritardo per i grandi giocatori CAD (tranne Autodesk, che è un caso particolare).

Non è una risposta in quanto tale, ma è interessante notare che le ultime versioni di AutoCAD offrono una scelta tra l'utilizzo di driver OpenGL o Direct3D nel "3dconfig" opzione di installazione. Fondamentalmente, AutoCAD è un'app solo per Windows, quindi ha senso per loro (finalmente) supportare Direct3D. Vedi pagina 15 di questo Whitepaper di AutoDesk per maggiori informazioni .

La risposta che tutti vogliono credere è SÌ, ma la vera risposta è, dipende.

Circa il 50% di tutto l'hardware disponibile non eseguirà OpenGL a un livello ragionevole. Per vedere un esempio di ciò leggi le FAQ per Google Sketchup che utilizza OpenGL

  

Le prestazioni di SketchUp dipendono fortemente dal driver della scheda grafica ed è in grado di supportare OpenGL 1.5 o versioni successive. Storicamente, le persone hanno riscontrato problemi con le schede ATI Radeon e le schede basate su Intel con SketchUp. Al momento non è consigliabile utilizzare queste schede grafiche con SketchUp. ( Requisiti hardware e software per Google Sketchup

Quindi, se stai scrivendo un'app CAD e non ti dispiace dirlo ai tuoi clienti, " devi avere una scheda video compatibile OpenGL " allora la risposta è sì.

Se invece stai creando un'app per l'utente finale (ad esempio Google Earth), la risposta triste è che dovrai scrivere una versione D3D e GL della tua app se vuoi raggiungere l'intero mercato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top