2012-03-27 11 views
10

He realizado un proyecto de gráficos utilizando OpenGL y ahora quiero convertirlo en WebGL para poder ponerlo en la web. ¿Hay alguna manera de convertir directamente los códigos OpenGL C++ a WebGL o tengo que volver a escribir manualmente? He aprendido solo algunos conceptos básicos de WebGL ya que también estoy aprendiendo javascript en paralelo (solo porque es necesario para codificar webgl). Y cualquier otra sugerencia también es bienvenida.Cómo convertir código OpenGL a WebGL

Respuesta

13

Me sorprende que nadie haya mencionado Emscripten. No es una solución perfecta, y dependiendo de cómo esté estructurado su código y de qué bibliotecas use, es posible que tenga que realizar algunos ajustes manuales, pero funciona bastante bien como un compilador genérico de C++ a Javascript.

No prometo que es una bala mágica, pero puede valer la pena verla.

+0

muchas gracias ... :) Estoy tratando de trabajar con Emscripten ... veamos qué pasa. Estoy usando las librerías glut. – Bond

+2

¿Tiene alguna actualización sobre cómo esto funcionó para usted? Estoy tomando una clase que es estrictamente OpenGL, pero espero convertir mi proyecto final en una versión basada en web ... –

+0

Déjenme agregar el escritorio GL tiene [una antigua API de función fija obsoleta] (http: // stackoverflow .com/a/35802910/128511) que requiere algo de trabajo para emular si todavía lo está usando. – gman

0

En general, se requiere reescritura manual. No hay muchas posibilidades de que una solución genérica interprete correctamente el código existente. Por supuesto, puede escribir su propio convertidor ya que tiene el beneficio de solo tratar con su propio código y estructuras.

También vale la pena mencionar que WebGL es un subconjunto de OpenGL ES 2.0 por lo que el código escrito para sistemas de escritorio no será necesariamente compatible de todos modos.

Lo más parecido que he visto es código para convertir modelos OBJ en código WebGL.

1

A menos que su aplicación sea trivial, la mayor parte de su problema va a convertir el código C++ en JavaScript. C++ y JavaScript son idiomas bastante diferentes, p. uno está tipado estáticamente y el otro está tipeado dinámicamente.

WebGL está basado en OpenGL ES 2.0, que es más o menos un subconjunto de OpenGL 2.0. Entonces puede escribir código OpenGL que es traducible directamente, pero no todo es código OpenGL. Es difícil saber qué tan fácil será la transferencia del código OpenGL sin más información.

No conozco ninguna herramienta para automatizar el trabajo para usted, y sería muy escéptico con respecto a tales herramientas si las viera. Mapear la semántica de un lenguaje de programación o API a otro es una tarea muy difícil de automatizar.

+0

kusma y @SpliFF Gracias por responder. De hecho, he creado un recorrido por un edificio y ahora quiero publicitarlo a través de la red y es por eso que necesito webGL. – Bond

4

Es una solución comercial, pero Mandreel hará esto. Incluso emula el soporte de la función fija de OpenGL ES 1.1 en WebGL. También hay Emscripten que convertirá el C/C++ y aparentemente tiene algunos anterior OpenGL support.

De lo contrario,

  1. vas a tener que convertir el C++ para JavaScript, por supuesto
  2. Si ha utilizado las características de edad función fija de edad OpenGL (glVertex, glColor, etc ..) que Tendrá que convertirlos a utilizar el estilo programable más reciente de OpenGL y OpenGL ES 4 2,0 ​​
+0

muchas gracias por su ayuda. Tendré que ver mi presupuesto para Mandreel. Pero es realmente genial. – Bond

0

parece que http://asmjs.org/ puede ser una base para la ejecución de código no-Javascript en su navegador.

Emscriptem (ya mencionado), creo, puede comprender LLVM que algunos compiladores de C++ pueden generar, pero probablemente también necesite trabajo manual, la forma en que funcionan estas cosas.

Nunca he usado ninguno de estos, pero leí sobre ellos y parecen interesantes y tratando de alcanzar lo que intentan lograr, no puedo decir nada sobre la implementación y cómo funcionan en el "mundo real" .

Cuestiones relacionadas