2009-09-03 9 views
7

J'ai écrit un programme en C++/OpenGL (en utilisant le compilateur Dev-C++) pour ma classe de calcul 2. L'enseignant a aimé le programme et il m'a demandé de le mettre en ligne de sorte que, au lieu de télécharger le fichier .exe, je peux simplement l'exécuter sur le navigateur Web. Un peu comme les applets Java fonctionnent sur le navigateur.Quelle est la meilleure approche pour utiliser OpenGL sur le Web?

La question est:

Comment, si possible, puis-je afficher un C++/OpenGL programme dans un navigateur web? Je pense à passer à JOGL qui est une interprétation Java d'OpenGL mais je préfère rester en C++ car je le connais plus.

Y a-t-il une autre API de base de données 3D meilleure et plus simple que je puisse envisager?

+0

Il y a une chose appelée "Unity Web Player". Aucune idée de ce qui est en dessous, je suis tombé sur un jeu en 3D récemment. – Eugene

+0

Je vais vérifier –

+0

JOGL est très accessible si vous connaissez déjà C++. Je ne pense pas que vous auriez aucun problème à utiliser JOGL. – Ricket

Répondre

5

AFAIK, il y a seulement 3 options:

  1. Java. il inclut toute la pile OpenGL.

    • Google's Native Client (NaCL), essentiellement, il est un plug-in qui vous permet d'exécuter du code exécutable x86. Il suffit de le compiler et de l'appeler à partir du HTML. Très expérimental, et personne ne l'aura déjà installé. Vous ne savez pas si cela vous donne accès aux bibliothèques OpenGL.

    • Canvas:3D. Un autre projet très expérimental. Ceci est une API 3D accélérée accessible depuis JavaScript. AFAICT, c'est seulement sur les versions expérimentales de Firefox.

Je vais pour Java, le cas échéant. OTOH, s'il s'agit principalement de travaux vectoriels (sans beaucoup de textures et d'illumination/ombres), vous pouvez le faire fonctionner sur SVG en projetant simplement vos vecteurs de la 3D vers la 2D. Dans ce cas, vous pouvez obtenir une compatibilité entre navigateurs en utilisant SVGWeb, c'est une bibliothèque JavaScript simple qui vous permet d'utiliser de manière transparente la prise en charge SVG native du navigateur ou un moteur de rendu SVG basé sur Flash.

+0

Oui, je pense la même chose. Il n'y a pas trop d'options à ce sujet. Mais merci pour la réponse. –

1

Avez-vous vraiment le temps de le réécrire? Je pensais que les étudiants étaient trop occupés pour un travail non essentiel.

Mais si vous voulez vraiment le faire, peut-être un aperçu de celui-ci fonctionnant comme un film flash est le moyen le plus facile. Ensuite, c'est juste une question de faire cela et vous pouvez fournir un lien de téléchargement vers l'application réelle si les gens sont intéressés.

+0

LOL Je n'ai pas beaucoup d'heures de travail donc je passe le plus clair de mon temps à étudier, donc je pense que je peux passer mon temps. + LOL bien je peux le faire mais je ne sais pas je suis curieux de savoir comment faire OpenGL sur le web. –

0

Deux approches:

  1. Passer à Java.Cependant, votre application souffrira d'une perte de performance en tant que compromis pour la portabilité. Mais puisque Java est partout, cette approche garantit que votre code peut être exécuté dans la plupart des navigateurs.

  2. Utilisez ActiveX, qui vous permet d'exécuter du code binaire natif pour Microsoft Windows. Ceci n'est pas recommandé en production car ActiveX est bien connu comme un trou de sécurité potentiel, mais puisque votre conférencier est celui qui le regarde, la sécurité ne semble pas être une grosse affaire. Ceci est applicable pour la plate-forme Microsoft (Windows + IE) uniquement.

5

Il y a beaucoup d'activité récemment avec WebGL. Il s'agit d'une liaison pour Javascript aux implémentations OpenGL ES 2.0 natives, conçues comme une extension de l'élément HTML5 canvas.

Il est pris en charge par les versions nocturnes de Firefox, Safari, Chrome et Opera. Jetez un oeil à ces tutorials, basé sur les tutoriels NeHe OpenGL bien connus.

Plusieurs projets basés sur WebGL émergent, notamment les API Scenegraphs.

  • des équipes Indie: SceneJS, GLGE, SpiderGL.
  • De Google: l'équipe derrière O3D plugin essaie d'implémenter un backend WebGL pur (source) pour le projet, de sorte qu'aucun plugin ne sera nécessaire. De W3C/Web3D: Une discussion est en cours pour inclure X3D dans n'importe quel arbre DOM HTML5, un peu comme SVG dans HTML4. Le projet X3DOM est né l'année dernière pour soutenir cette idée. Maintenant, il utilise WebGL comme backend de rendu, et est la version 1.0 depuis Mars 2010.

Je suis presque sûr que WebGL est la voie à suivre dans un avenir proche. Mozilla/Google/Apple/Opera en font la promotion, et si la technologie fonctionne et qu'il y a suffisamment de demande client/développeur, peut-être que Microsoft l'implémentera sur IE (espérons qu'il n'y aura pas de "WebDX"!).

1

Une autre solution consiste à utiliser Emscripten (un compilateur source-à-source). Emscripten supporte C/C++ et OpenGL et traduira la source en html/JavaScript. Pour utiliser Emscripten, vous devez utiliser SDL comme couche d'abstraction de plate-forme (pour obtenir un contexte OpenGL et charger des images). Emscripten est actuellement utilisé dans Unreal Engine et sera également utilisé dans le moteur Unity 5.

En savoir plus sur le projet ici: https://github.com/kripken/emscripten

Questions connexes