2009-09-03 9 views
7

Escribí un programa en C++/OpenGL (usando el compilador Dev-C++) para mi clase de cálculo 2. A la maestra le gustó el programa y me pidió que lo pusiera en línea para que, en lugar de descargar el .exe, pudiera ejecutarlo en el navegador web. Algo así como los applets java se ejecutan en el navegador.¿Cuál es el mejor enfoque para usar OpenGL en la web?

La pregunta es:

¿Cómo, si es posible, se puede mostrar que un programa en C++/OpenGL en un navegador web? Estoy pensando en pasar a JOGL, que es una interpretación java de OpenGL, pero prefiero quedarme en C++ porque estoy más familiarizado con él.

Además, ¿hay alguna otra API web 3D mejor y más fácil que pueda considerar?

+0

No es una cosa que se llama "Web Player Unidad". No tengo idea de lo que hay debajo, acabo de tropezar con un juego en 3D recientemente. – Eugene

+0

Lo comprobaré –

+0

JOGL es muy accesible si ya conoces C++. No creo que tengas ningún problema para usar JOGL. – Ricket

Respuesta

5

yo sepa, sólo hay 3 opciones:

  1. Java. incluye toda la pila de OpenGL.

    • Google's Native Client (NaCL), en esencia se trata de un plug-in que te permite ejecutar código x86 ejecutable. Simplemente compílalo y llámalo desde HTML. Altamente experimental, y nadie lo tendrá ya instalado. No estoy seguro si le da acceso a las bibliotecas de OpenGL.

    • Canvas:3D. Otro proyecto muy experimental. Esta es una API 3D acelerada accesible desde JavaScript. AFAICT, solo está en versiones experimentales de Firefox.

me gustaría ir para Java, en todo caso.

OTOH, si se trata principalmente de trabajos vectoriales (sin muchas texturas e iluminaciones/sombras), puede hacer que funcione en SVG simplemente proyectando sus vectores de 3D a 2D. En ese caso, puede lograr la compatibilidad entre navegadores usando SVGWeb, es una biblioteca de JavaScript simple que le permite usar de forma transparente el soporte SVG nativo del navegador o un renderizador SVG basado en Flash.

+0

Sí, pensé lo mismo. No hay demasiadas opciones sobre esto. Pero gracias por la respuesta. –

1

¿Realmente tiene tiempo para reescribirlo? Pensé que se suponía que los estudiantes estaban demasiado ocupados para el trabajo de asignación no esencial.

Pero si realmente quieres hacerlo, quizás una vista previa de la misma se ejecute como una película flash es la manera más fácil. Entonces solo se trata de hacer eso y se puede proporcionar un enlace de descarga a la aplicación real si las personas están interesadas.

+0

LOL No tengo tantas horas de trabajo, así que paso la mayor parte del tiempo estudiando, así que creo que puedo pasar el tiempo. + LOL, bueno, puedo hacerlo, pero no sé, tengo curiosidad sobre cómo hacer OpenGL en la web. –

0

dos enfoques:

  1. Cambiar a Java.Sin embargo, su aplicación sufrirá una pérdida de rendimiento como una compensación por la portabilidad. Pero dado que Java está en todas partes, este enfoque garantiza que su código se pueda ejecutar en la mayoría de los navegadores.

  2. Use ActiveX, que le permite ejecutar código binario nativo para Microsoft Windows. Esto no se recomienda en producción porque activeX es bien conocido como un potencial agujero de seguridad, pero como su conferenciante es quien lo está viendo, la seguridad no parece ser un gran problema. Esto es aplicable solo para la plataforma Microsoft (Windows + IE).

5

Recientemente ha habido mucha actividad con WebGL. Es un enlace para Javascript para las implementaciones nativas de OpenGL ES 2.0, diseñado como una extensión del elemento canvas canvas.

Es compatible con las versiones nocturnas de Firefox, Safari, Chrome y Opera.

Eche un vistazo a estos tutorials, según los conocidos tutoriales de NeHe OpenGL.

Están surgiendo varios proyectos basados ​​en WebGL, sobre todo en las API de Scenegraphs.

  • De equipos Indie: SceneJS, GLGE, SpiderGL.
  • De Google: el equipo detrás de O3D plugin está tratando de implementar un backend WebGL puro (source) para el proyecto, por lo que no será necesario ningún complemento.
  • Desde W3C/Web3D: Existe una discusión en curso para incluir X3D como parte de cualquier árbol de DOM HTML5, al igual que SVG en HTML4. El proyecto X3DOM nació el año pasado para apoyar esta idea. Ahora está usando WebGL como backend de renderizado, y es la versión 1.0 desde marzo de 2010.

Estoy casi seguro de que WebGL es el camino a seguir en el futuro cercano. Mozilla/Google/Apple/Opera lo están promocionando, y si la tecnología funciona y hay una demanda suficiente de clientes/desarrolladores, tal vez Microsoft lo implementará en IE (¡esperemos que no haya "WebDX"!).

1

Otra solución es usar Emscripten (un compilador de fuente a fuente). Emscripten admite C/C++ y OpenGL y traducirá la fuente en html/JavaScript.

Para usar Emscripten, necesitará usar SDL como una capa de abstracción de plataforma (para obtener un contexto OpenGL así como para cargar imágenes).

Emscripten se utiliza actualmente en Unreal Engine y también se utilizará en el motor Unity 5.

Leer más sobre el proyecto aquí: https://github.com/kripken/emscripten

Cuestiones relacionadas