Pregunta ¿Cuál es el mejor enfoque para usar OpenGL en la web?


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.

La pregunta es:

¿Cómo, si es posible, puedo mostrar un programa C ++ / OpenGL en un navegador web? Estoy pensando en pasar a JOGL, que es una interpretación de OpenGL en Java, 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?


7
2017-09-03 03:00


origen


Respuestas:


AFAIK, solo hay 3 opciones:

  1. Java. incluye toda la pila de OpenGL.

    • Cliente nativo de Google (NaCl), esencialmente es un complemento 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.

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

Yo iría por 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 utilizando SVGWeb, es una biblioteca de JavaScript simple que le permite utilizar de forma transparente el soporte SVG nativo del navegador o un renderizador SVG basado en Flash.


5
2017-09-03 03:25



Hay mucha actividad recientemente 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 tutoriales, basado en los bien conocidos tutoriales de NeHe OpenGL.

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

  • De los equipos Indie: SceneJS, GLGE, SpiderGL.
  • De Google: el equipo detrás Complemento O3D está tratando de implementar un backend WebGL puro (fuente) 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 de HTML5, al igual que SVG en HTML4. los X3DOM proyecto nació el año pasado para apoyar esta idea. Ahora está usando WebGL como back-end 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"!).


5
2018-04-18 11:24



Fuera de Java, OpenGL en el navegador está realmente en su infancia. Sin embargo, Google lanzó una API y plugin geniales para él. Se llama O3D:

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

Artículo sobre la iniciativa general: http://www.macworld.com/article/142079/2009/08/webgl.html


2
2017-09-03 03:29



¿Realmente tienes 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 quiere 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.


1
2017-09-03 03:09



No es OpenGL, pero el Consorcio Web3D  Especificación X3D puede ser de interés.


1
2017-09-03 03:37



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 está utilizando actualmente en Unreal Engine y también se usará en el motor de Unity 5.

Lee más acerca del proyecto aquí: https://github.com/kripken/emscripten


1
2018-04-29 21:14



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).


0
2017-09-03 03:40