2009-04-20 7 views
4

Ich kann keine klare Antwort auf diese Frage mit all meinem googlen finden.Java-Applets mit hardwarebeschleunigter 3D-Grafik? OpenGL und/oder DirectX

Wenn ich ein Web-Applet haben möchte, gibt es eine Java-Bibliothek, die die hardwarebeschleunigten Grafiktreiber auf dem Client-Rechner nutzt, wie in OpenGL und directx? Ich stelle mir vor, einen Treibererkennungscode zu schreiben, bevor das Applet startet, um die 3D-Grafikfähigkeiten zu erkennen.

Ich weiß, dass es viele Java 3D-Bibliotheken gibt, aber ich kann das nicht herausfinden.

Ich hatte den Eindruck, dass Sie das tun können, aber nicht finden können.

Während ich frage, wie wäre es mit Flash und Silverlight? Ich dachte, alle 3D-Grafiken werden mit Software gerendert?

EDIT:

Ich sehe die Antwort auf die Frage ist ja, tut Java 3D-Hardware-Unterstützung. Danke für die Info!

Ich denke, meine Frage ist (was ich hinaus will):

1) Inwieweit dies für die volle Nutzung unterstützt wird? Können Sie beispielsweise DirectX- oder OpenGL-Shader verwenden? Ich könnte erwarten, dass einige Merkmale fehlen, die dazu neigen, Dinge zu abstrahieren. Kann ich ein GPUID-Programm oder ein Dienstprogramm erstellen, das die GPU-Funktionen des Clients im Detail aufführt?

2) Ist es praktisch? Könnte ich ein altes 3D-Spiel wie Quake in ein Java-Applet portieren und eine anständige Leistung haben? (hängt natürlich vom Client-System ab)

Antwort

0

Unterstützung für Hardware-beschleunigte Grafik wurde in Java seit 1.5.

Siehe Release-Informationen zu how to do it. Hinweis: Dies ist für 2D.

Für 3D hat J2SE Java3D.

3

Die applet-launcher project soll helfen:

Der JNLPAppletLauncher ist eine universelle JNLP-basierte Applet Launcher Klasse für Applets bereitstellen, die Erweiterungsbibliotheken enthalten nativen Code verwenden. Es erlaubt Applets, Erweiterungen wie Java 3D, JOGL und JOAL sehr einfach zu verwenden, mit nur wenigen zusätzlichen Parametern zum Tag <applet>, in Java SE-Versionen bis 1.4.2.

JOGL hat eine Probe Applet here und Java3D hat zwei Proben here.

+0

der erste Link, den Sie mir Safari auf meinem nicht-Intel-basierten Mac gesperrt. So viel zur hohen Kompatibilität! – tkotitan

+0

Es gibt auch eine Version JOGL in JavaFX. tkotitan: Hast du einen Stapel Dump bekommen? –

+0

Der Applet Launcher selbst? Oder der JOGL? Alles OpenGL tötet meinen Computer (ich habe ATI-Video integriert). –

0

Flash unterstützt Pseudo-3D, aber keine OpenGL-beschleunigten Full-Scene-3D (im Grunde nur perspektivische Warping-Effekte). Es gibt auch einige Software-orientierte Lösungen (z. B. Papervision3D).

Silverlight wird auch in diesem Jahr mit der Version 3.0 Pseudo-3D unterstützen. Soweit ich weiß, sind derzeit keine vollständigen 3D-Pläne geplant.

Angeblich ist 3D-Unterstützung für eine spätere Version der JavaFX-Initiative geplant, die (wenn überhaupt) die Unterstützung in Applets erheblich verbessern würde.

2

DirectX ist ein proprietäres Microsoft 3D-System. Wenn Sie also nicht sicher sind, dass Sie nur mit Microsoft-Systemen arbeiten, würde ich DirectX vermeiden.

JOGL und Java3D sind sehr unterschiedlich. JOGL ist eine dünne Schicht über OpenGL mit allen Vor- und Nachteilen. Java3D ist ein komplettes Scenegraph-System.

0

Es kann auch nützlich sein zu beachten, dass in den neuen Versionen von Java (ich denke, 1.6 Release 10?) Gab es erhebliche Verbesserungen der Grafik-Pipeline für Windows.

0

Sie werden keine Shader haben, zuletzt habe ich überprüft; Sie erhalten im Grunde eine Scenegraph-API zusätzlich zu den Funktionen, die Sie für DX5- oder DX6-Funktionen halten könnten, je nachdem, was Sie tun.

1

Es ist durchaus möglich, Java-Applets zu schreiben, die auf die 3D-Hardware zugreifen. Das env3d-Projekt (http://env3d.org) ist genau das - eine Java-3D-Engine, die 3D-beschleunigte 3D-Applets erzeugt. Es gibt viele Beispielprogramme auf der Website, um die Verwendung von hardwarebeschleunigtem 3D in Ihrem Browser zu demonstrieren. Die einzige Voraussetzung ist, dass Java installiert sein muss und der Benutzer explizit zulassen muss, dass das Applet auf lokale Ressourcen zugreifen darf.

Env3D basiert auf lwjgl, einem opengl/gaming Wrapper für Java. Es unterstützt sogar Shader und andere erweiterte Funktionen.