11 Stimmen

Was ist der beste Ansatz für die Verwendung von OpenGL im Web?

Ich habe ein Programm in C++/OpenGL (unter Verwendung des Dev-C++ Compilers) für meinen Kurs in Kalkül 2 geschrieben. Dem Lehrer gefiel das Programm und er bat mich, es irgendwie online zu stellen, so dass ich es einfach im Webbrowser ausführen kann, anstatt die .exe-Datei herunterzuladen. So ähnlich wie Java-Applets, die im Browser laufen.

Die Frage ist:

Wie kann ich, wenn möglich, ein C++/OpenGL-Programm in einem Webbrowser anzeigen? Ich denke darüber nach, zu JOGL zu wechseln, einer Java-Interpretation von OpenGL, aber ich bleibe lieber bei C++, da ich damit besser vertraut bin.

Gibt es auch eine andere bessere und einfachere 3D-Web-Basis-API, die ich in Betracht ziehen kann?

6voto

Gabriel Cuvillier Punkte 3481

In letzter Zeit gab es viele Aktivitäten mit WebGL . Es handelt sich um eine Anbindung von Javascript an native OpenGL ES 2.0-Implementierungen, die als Erweiterung des HTML5-Elements Canvas konzipiert ist.

Es wird von den Nightly-Builds von Firefox, Safari, Chrome und Opera unterstützt.

Werfen Sie einen Blick auf diese Tutorials die auf den bekannten NeHe OpenGL-Tutorials basieren.

Mehrere Projekte, die auf WebGL basieren, sind im Entstehen begriffen, vor allem die Scenegraphs APIs.

  • Von Indie-Teams: SceneJS , GLGE , SpiderGL .
  • Von Google: Das Team hinter O3D-Plugin versucht, ein reines WebGL-Backend zu implementieren ( Quelle ) für das Projekt, so dass kein Plugin erforderlich ist.
  • Von W3C/Web3D: Es gibt eine laufende Diskussion über die Aufnahme von X3D als Teil eines HTML5-DOM-Baums, ähnlich wie SVG in HTML4. Die X3DOM wurde letztes Jahr ins Leben gerufen, um diese Idee zu unterstützen. Jetzt ist es mit WebGL als Render-Backend, und ist Version 1.0 seit März 2010.

Ich bin mir fast sicher, dass WebGL in naher Zukunft der richtige Weg sein wird. Mozilla/Google/Apple/Opera fördern es, und wenn die Technologie funktioniert und es eine ausreichende Nachfrage von Kunden/Entwicklern gibt, wird Microsoft es vielleicht in den IE implementieren (hoffen wir, dass es kein "WebDX" geben wird!).

4voto

Javier Punkte 58737

AFAIK gibt es nur 3 Optionen:

  1. Java. Es umfasst den gesamten OpenGL-Stack.

    • Googles nativer Client (NaCL) Es handelt sich im Wesentlichen um ein Plugin, mit dem Sie ausführbaren x86-Code ausführen können. Kompilieren Sie ihn einfach und rufen Sie ihn über HTML auf. Hochgradig experimentell, und niemand wird es bereits installiert haben. Ich bin mir nicht sicher, ob man damit Zugriff auf OpenGL-Bibliotheken hat.

    • Leinwand:3D . Ein weiteres sehr experimentelles Projekt. Es handelt sich um eine beschleunigte 3D-API, die über JavaScript zugänglich ist. AFAICT, ist es nur auf experimentelle Builds von Firefox.

Ich würde mich für Java entscheiden, wenn überhaupt.

OTOH, wenn es vor allem vektorielle Arbeiten (ohne viele Texturen und Beleuchtung / Schatten), könnten Sie es auf SVG einfach durch Projizieren Sie Ihre Vektoren von 3D zu 2D zu arbeiten. In diesem Fall können Sie browserübergreifende Kompatibilität erreichen, indem Sie SVGWeb Es handelt sich um eine einfache JavaScript-Bibliothek, die es Ihnen ermöglicht, entweder die native SVG-Unterstützung des Browsers oder einen Flash-basierten SVG-Renderer transparent zu nutzen.

1voto

hookenz Punkte 33326

Haben Sie wirklich die Zeit, ihn umzuschreiben? Ich dachte, Studenten sollten zu beschäftigt sein, um sich mit unwichtigen Aufgaben zu beschäftigen.

Aber wenn Sie es wirklich tun wollen, ist vielleicht eine Vorschau als Flash-Film der einfachste Weg. Dann ist es nur eine Frage der Umsetzung und Sie könnten einen Download-Link zur echten Anwendung bereitstellen, wenn die Leute daran interessiert sind.

1voto

brianreavis Punkte 11412

Außerhalb von Java steckt OpenGL in Browsern wirklich noch in den Kinderschuhen. Google hat jedoch eine wirklich coole API und ein Plugin dafür herausgebracht. Es heißt O3D:

http://code.google.com/apis/o3d/

Artikel über die Gesamtinitiative: http://www.macworld.com/article/142079/2009/08/webgl.html

0voto

Judge Maygarden Punkte 25975

Es ist nicht OpenGL, sondern die Web3D-Konsortium's X3D-Spezifikation könnte von Interesse sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X