2009-04-20 19 views
4

Je ne trouve pas de réponse claire à cette question avec tous mes googlings.Applets Java avec des graphiques 3D accélérés par le matériel? OpenGL et/ou DirectX

Si je veux une applet Web, existe-t-il une bibliothèque en Java qui tire parti des pilotes graphiques accélérés par le matériel sur la machine du client, comme OpenGL et DirectX? J'imagine écrire un code de détection de pilote avant que l'applet ne se lance pour détecter les capacités graphiques 3D. Je réalise qu'il y a beaucoup de bibliothèques Java 3D mais je ne peux pas comprendre cela. J'ai eu l'impression que vous pouviez le faire, mais je n'arrive pas à le trouver.

Alors que je demande, qu'en est-il de Flash et Silverlight? Je pensais que tous leurs graphiques 3D sont rendus par logiciel?

EDIT:

Je vois la réponse à la question est oui, Java n'a pas le support matériel 3D. Merci pour toutes ces informations!

Je pense que ma vraie question est (ce que je veux en venir):

1) Dans quelle mesure cette prise en charge pour une utilisation complète? Pouvez-vous utiliser des shaders DirectX ou OpenGL, par exemple? Je pourrais m'attendre à manquer certaines fonctionnalités, car cela tend à faire abstraction des choses. Pourrais-je créer un programme GPUID ou un utilitaire répertoriant les fonctionnalités GPU du client en détail?

2) Est-ce pratique? Pourrais-je porter un ancien jeu 3D comme Quake dans une applet Java et avoir des performances correctes? (dépend du système client bien sûr)

Répondre

0

La prise en charge des graphiques accélérés par le matériel a été prise en charge par Java depuis la version 1.5.

Voir les notes de publication sur how to do it. Note: ceci est pour 2D.

Pour la 3D, J2SE a Java3D.

3

Le applet-launcher project devrait aider:

Le JNLPAppletLauncher est un lanceur applet basé JNLP à usage général classe pour le déploiement d'applets qui utilisent les bibliothèques d'extension contenant du code natif. Il permet aux applets d'utiliser très facilement des extensions telles que Java 3D, JOGL et JOAL, avec juste quelques paramètres supplémentaires sur la balise <applet>, sur les versions Java SE dès 1.4.2.

JOGL a une applet d'échantillon here, et Java3D a deux échantillons here.

+0

le premier lien que vous m'avez donné bloqué safari sur mon mac non-Intel. Tellement pour une compatibilité élevée! – tkotitan

+0

Il existe également une version JOGL dans JavaFX. tkotitan: Avez-vous reçu un vidage de pile? –

+0

Le lanceur d'applet lui-même? Ou le JOGL? Quelque chose OpenGL tue mon ordinateur (j'ai intégré la vidéo ATI). –

0

Flash prend en charge la pseudo-3D, mais pas n'importe quel type de scène 3D accélérée OpenGL (essentiellement des effets de distorsion en perspective). Il existe également des solutions logicielles (par exemple, Papervision3D).

Silverlight supportera aussi les pseudo-3D avec la version 3.0 plus tard cette année. Pour autant que je sache, il n'y a actuellement aucun plan pour la 3D complète.

Supposons que la prise en charge 3D est prévue pour une version ultérieure de l'initiative JavaFX, ce qui améliorerait (si cela arrive) le support dans les applets.

2

DirectX est un système Microsoft 3D propriétaire, donc à moins que vous ne soyez sûr que vous ne fonctionnerez que sur des systèmes Microsoft, j'éviterais DirectX.

JOGL et Java3D sont très différents. JOGL est une couche mince sur OpenGL, avec tous les avantages et les inconvénients que cela implique. Java3D est un système de scène complet.

0

Il peut également être utile de noter que dans les nouvelles versions de Java (je pense à la version 1.6 10?), Il y a eu des améliorations significatives dans le pipeline graphique pour Windows.

0

Vous n'aurez pas de shaders, la dernière fois que j'ai vérifié; vous obtenez essentiellement une API scenegraph en plus de ce que vous pourriez considérer comme une fonctionnalité de niveau DX5 ou DX6, selon ce que vous faites.

1

Il est tout à fait possible d'écrire des applets java qui accèdent au matériel 3D. Le projet env3d (http://env3d.org) est exactement ce - un moteur 3D Java qui produit des applets 3D accélérés 3D. Il existe de nombreux exemples de programmes sur le site Web pour illustrer l'utilisation de la 3D accélérée par le matériel dans votre navigateur. La seule exigence est que Java doit être installé et que l'utilisateur doit explicitement autoriser l'applet à accéder aux ressources locales.

Env3D est basé sur lwjgl, un wrapper opengl/gaming pour Java. Il prend même en charge les shaders et autres fonctionnalités avancées.