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
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.
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.
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.
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
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,
- vas a tener que convertir el C++ para JavaScript, por supuesto
- 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
muchas gracias por su ayuda. Tendré que ver mi presupuesto para Mandreel. Pero es realmente genial. – Bond
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" .
- 1. Necesito acelerar mi SVG. ¿Puedo convertir a WebGL o canvas?
- 2. WebGL Geometry Shader Equivalente?
- 3. ¿Cómo puedo usar las características de OpenGL 4 a través de WebGL
- 4. Convertir la textura OpenGL a OpenCV Mat
- 5. JOGL Applets versus WebGL
- 6. Cómo convertir código C++ a C
- 7. ¿Cómo convertir ASM a código legible?
- 8. Cómo convertir un carácter a código clave?
- 9. Convertir código PHP a C++
- 10. Código de sombreador de webgl en línea en javascript
- 11. ¿Cómo detectar colisión en webgl?
- 12. WebGL Framework
- 13. Convertir código clave a clave char
- 14. Convertir el código C99 a C89
- 15. ¿Guía para escribir código compatible con OpenGL y OpenGL ES?
- 16. ¿Cuándo WebGL decide actualizar la pantalla?
- 17. Cómo medir la memoria gráfica Uso de una aplicación WebGL
- 18. Render WebGL en Xfvb
- 19. ¿contiene webGL push/popMatrix?
- 20. Convertir polígono a triángulos
- 21. WebGL crear Textura
- 22. ¿Cómo convertir el código de Ruby 1.9.2 a JavaScript?
- 23. ¿Cómo convertir código de notación unicode javascript a utf-8?
- 24. Cómo convertir el código IR de llvm a c?
- 25. ¿Cómo convertir automáticamente el código de conservación manual a ARC?
- 26. Xkb: Cómo convertir un código clave a keysym
- 27. ¿Cómo convertir un carácter a su código clave?
- 28. ¿Cómo puedo convertir el código VB6 a C#?
- 29. AS3: Cómo convertir código ascii a character actionscript
- 30. cómo convertir el código de Python 3 a Python 2?
muchas gracias ... :) Estoy tratando de trabajar con Emscripten ... veamos qué pasa. Estoy usando las librerías glut. – Bond
¿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 ... –
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