Frage

Das Standardmodell ist, dass OpenGL für professionelle Anwendungen (CAD) und Direct3D ist für Spiele.

Mit dem Debakel von OpenGL 3.0, OpenGL noch die natürliche Wahl für technische 3D-Anwendungen (CAD / GIS)?
Gibt es Scenegraph-Bibliotheken für Direct3D?

(Natürlich Direct3D ist nur unter Windows).

War es hilfreich?

Lösung

D3D macht Sie das Microsoft zahlen „Strategie Steuer.“ Das heißt, dient D3D zwei Herren. Eine davon ist es Ihnen, Funktionen und Leistung. Die andere ist in der Regel Lock-in zu anderen MS-Produkte und die Windows-Plattform zu gewährleisten. Dies hat einige Konsequenzen für Sie:

  1. Eine D3D App wird nicht auf irgendetwas läuft aber Windows (einschließlich Xbox). Vielleicht denken Sie nicht, dass jetzt wichtig ist. Aber wenn, auf der Straße, die Sie wollen auf dem Mac laufen, Linux, PS3, zukünftige Konsolen usw., können Sie gerne die plattformunabhängige Wahl gewählt haben.

  2. MS kann einige willkürliche Entscheidungen treffen. Wird die nächste Version von D3D nur auf einem OS ausführen, die neue Hardware erfordert, ist teuer, und viele Leute wollen nicht aktualisieren? Werden sie eine andere Zukunft entscheiden Sie nicht einverstanden sind?

  3. Historisch OpenGL hat in schnellen Belichtung neuer HW Funktionen geführt D3D. Dies ist, weil es ein Mechanismus in der Norm ist für die Anbieter ihre eigenen Erweiterungen hinzuzufügen, und für diese Erweiterungen schließlich in die Haupt spec gefaltet werden. D3D ist, was MS will es mit dem Input von Anbietern sein, um sicher zu sein, aber MS bekommt Vetomacht. Man könnte leicht wie mit Vista in einer Situation, wo MS nicht neue HW Funktionen die alten DX auszusetzen entschieden, und nur die neue DX auf Vista zur Verfügung stellen. Das war eine ziemliche Kopfschmerzen für Spiele-Entwickler.

Nun, das ist der Geschmack der Gründe, warum eine „professionelle app“ (CAD, Animation, wissenschaftliche Visualisierung, GIS, etc.) würde OGL bevorzugen - Anwendungen wie diese will viele Jahre stabil sein, die laufende Wartung benötigen und Verbesserung, und wollen auf vielen Plattformen laufen. Dies steht im Gegensatz zu den Spielen, die sehr häufig nur auf einer Plattform sind, wird aber in der Regel nicht „gepflegt“ freigegeben werden (es wird wahrscheinlich keine 2.0, ein Update für ein anderes O 3 Jahre daher sein, braucht nicht zu unterstützen ältere HW, etc.). Spiele wollen maximale Leistung und müssen nur für ein kurzes Zeitfenster und auf einer feste Anzahl von Plattformen arbeiten. Wenn sie Windows-Ziel müssen sowieso und D3D ist ein wenig schneller, dass die richtige Wahl sein, da die negativen D3D Folgen werden ihnen nicht schaden, wie es für einen CAD-App würde sagen.

Andere Tipps

Wie immer, dies ist abhängig von Ihrer Situation.

Nach meiner Erfahrung zur Zeit (2008) OpenGL-Treiber Qualität auf Windows ist viel schlimmer als Direct3D-Treiber Qualität. Wenn Ihre Situation so ist, dass Sie Ihren Kunden nicht zumutbar verlangen immer up-to-date-Treiber zu haben, oder sie sagen, um ihre Grafikkarten zu denen zu ändern, die bessere OpenGL-Treiber haben, dann ist OpenGL eine ziemlich schlechte Wahl. In diesem Fall würde ich für D3D-Renderer unter Windows und OpenGL-Renderer auf OS X / Linux gehen (wenn Sie diese Plattformen unterstützen müssen, das ist).

Mit zwei Renderer ist nicht , die hart; in meiner Erfahrung um Fahrer Bugs arbeiten nimmt viel mehr Zeit als das Schreiben und die Rendering-Codepfade zu unterstützen.

Natürlich gibt es einige (spezifische) Situationen, in denen D3D hat einfach nicht die notwendigen Funktionen, um beispiels quad-gepufferte Genlock-Ausgang; oder Geometrie-Shader-Unterstützung unter Windows XP.

Also kurz gesagt: Wenn Sie eine bessere Treiber auf Windows möchten, verwenden Sie D3D. Wenn Sie nicht über Treiber Qualität egal viel oder Funktionen benötigen, die in OpenGL sind aber nicht in D3D, dann OpenGL verwenden.

Vielleicht sollten Sie eine Abstraktionsschicht versuchen, wie OGRE , die ohne Sie zwischen DirectX und OpenGL kann mit zu umschreiben etwas? Es fügt auch eine Vielzahl von Funktionen und ist nicht Spiel orientiert, aber recht allgemein gehalten.

Dies ist nicht direkt beantworten Ihre Frage (sorry), aber ich war einer der ursprünglichen Jungs arbeiten an Direct3D und hehe:

  

Gibt es Scenegraph-Bibliotheken für   Direct3D?

Direct3D (geborene Reality Lab) verwendet, um nur eine Bibliothek sein Scenegraph: -)

Schade, dass Direct3D Retained Mode wird nicht mehr ausgeliefert ...

Direct3D ist nur unter Windows und Xbox erhältlich. Wenn Sie auf Targeting Unix oder Mac, neben Windows planen, OpenGL ist eine gute Wahl.

Für mich als Grafik Programmierer in einem großen CAD-Unternehmen sprechen, gibt es derzeit drei Dinge, die OpenGL behalten von für Direct3D (10/11) für bestehende CAD / DCC-Anwendungen fallen gelassen beeing:

  1. Vermächtnis . Die meisten CAD-Software sind mehr oder weniger kaum zu eng OpenGL-Konzepte. Umschreiben alles um D3D ist Philosophie nicht immer überschaubar (technicaly sprechen und abhängig von der Fähigkeit / Bereitschaft der Unternehmen zu werfen Ressourcen auf es).

    Zweitens könnte es negative Auswirkungen, wenn etwas schief geht (Functionnality Sprechen und / oder Leistung klug) und Unternehmen würden wegen einer API und Architektur Schalter einfach nicht das Risiko eingehen, eine Major-Release verzögern.

  2. Völker . Völker in jener alten Jungen Industrie sind ziemlich konservativ. Sie bevorzugen Geld / Zeit der Ausgaben für den Umgang mit IHVs in Bezug auf alle OpenGL-Treiber Fragen, die sie oder einfach haben könnten, werden nicht mit Grafiken von einem bestimmten IHV (zum Beispiel Intel empfehlen oder ATI).

    Außerdem glaube ich, dass die Automobil / Luft- und Raumfahrt Kunden wie Boeing, Airbus, TMC, BMW, etc. ist es egal, dass viel von mit Quadros nur Workstation. Hardware immer noch günstig in Bezug auf Software Lizenzpreise.

  3. Zukunftstrends . mit Zukunft Generation von Prozessoren wie Llano, Larrabee, Fermi und Produkte, folgt, ist es definitiv wert zu investieren, F & E-Budgets, wie man Programmierung und Entwicklung neuer Sprachen / apis / Frameworks für die Zukunft hardwares (in der Bezeichnung der wie auch Grafiken als Nicht-Grafikaufgaben).

    CAD-Industrie hat große Zyklen und wird nicht, wenn nicht für eine wirklich bahnbrechende Technologie bewegen. So könnte D3D nur ein bisschen spät für große CAD-Spieler (außer Autodesk natürlich die einen speziellen Fall ist) kommen.

Nicht eine Antwort als solche aber ist interessant, die neuesten Versionen von AutoCAD geben Ihnen eine Auswahl zwischen der Verwendung von OpenGL oder Direct3D-Treiber in der „3DKONFIG“ Setup-Option zu beachten. Grundsätzlich AutoCAD ist ein Windows-only-App, so dass es Sinn für sie (endlich) gemacht Direct3D unterstützen. Siehe Seite 15 diese White Paper von AutoDesk für weitere Informationen .

Die Antwort jeder glauben will, ist ja aber die wirkliche Antwort ist, es hängt davon ab.

über 50% alle Hardware da draußen nicht OpenGL ein vernünftiges Niveau laufen. Um ein Beispiel dafür zu sehen, lesen Sie die FAQ für Google Sketchup, die OpenGL verwendet

  

SketchUp Leistung beruht, um die Grafikkartentreiber stark und es ist Fähigkeit, OpenGL 1.5 oder höher zu unterstützen. Historisch gesehen haben die Menschen Probleme mit ATI Radeon-Karten und Intel-basierten Karten mit SketchUp gesehen. Wir empfehlen nicht, diese Grafikkarten mit SketchUp zu diesem Zeitpunkt verwendet wird. ( Hardware ans Softwareanforderungen für Google Sketchup

Wenn Sie also eine CAD-App gerade schreiben und es Ihnen nichts ausmacht Ihre Kunden sagen: „Sie müssen eine OpenGL complient Grafikkarte haben“, dann ist die Antwort ja.

Wenn Sie stattdessen erstellen, um eine End-User-App (Google Earth zum Beispiel) dann die traurige Antwort ist Sie sowohl eine D3D und GL-Version Ihrer App schreiben müssen, wenn Sie den gesamten Markt erreichen wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top