2009-04-01 16 views
23

Actualmente estoy tratando de abrir y ejecutar OpenVG en mi escritorio. El problema viene aquí: estoy/voy a desarrollar una aplicación para un dispositivo con Windows CE (con .NET compact framework), que tiene acelerado por hardware OpenGL ES 2.0 y OpenVG 1.0.1 (basado en TI OMAP35x, si está interesado) La aplicación definitivamente usará OpenVG para dibujar, y probablemente OpenGL para algunos efectos si OpenVG no los ofrece (por ejemplo, desenfoque).Implementación de OpenVG acelerada por hardware en el escritorio basada en OpenGL ES

Ahora me gustaría desarrollar en mi escritorio sin el emulador (ver this question). Así que pensé que solo importaba OpenVG con P/Invoke, lo cual era bastante fácil, ya que las personas OpenVG convertían sus constantes en enumeraciones reales, y aunque era una API de C procedimental, se traducía muy bien en una forma orientada a objetos (con una clase Graphics para objetos de dibujo y trazado, pintura, trazo e imagen). También logré ponerme en marcha con differently named DLLs and entry points. Ah, e importé EGL 1.3, también bastante fácil de traducir a una API orientada a objetos.

Hasta este punto, sonaba bastante bien. Pensé que usaría la implementación de referencia OpenVG de Khronos, pero es lenta. Realmente lento. Ya sabes, como limpiar la superficie tomando literalmente un segundo! Así que pensé, bueno, OpenVG es un estándar, tomaré una de las otras implementaciones. La mayoría de ellos están basados ​​en OpenGL, que es lo que quiero. ¿O no?

No, no lo es. La creación de una superficie OpenGL ES 2.0 con EGL 1.3 (suministrada con PowerVR Windows Emulation SDK para OpenGL ES 2.0) no es compatible con ninguna implementación de OpenVG que haya intentado. Algunos de ellos requieren OpenGL tradicional (AmanithVG GLE), la versión EGL proporcionada por PowerVR no es compatible con OpenVG. La mayoría de las implementaciones ni siquiera tienen EGL y usan algunas funciones extrañas para inicializar el contexto, todas ellas suponiendo que ya se ha creado un contexto de OpenGL. OpenGL, no OpenGL ES. Suspiro.

El único que pude ponerme a trabajar fue AmanithVG SRE, que es muy rápido para una implementación de software y no depende de OpenGL o EGL. Funciona, pero todavía es demasiado lento para animaciones en tiempo real.

No puedo creer que estas cosas se sientan tan mal. Estoy realmente tentado de usar WindowsMobile.DirectX.Direct3D, para lo cual PowerVR proporciona una capa de emulación para Windows de escritorio, con la esperanza de que el paquete de soporte de la placa final proporcione Direct3D como un contenedor OpenGL ES, como parece estar en muchos dispositivos.

Entonces, la pregunta, por último:

¿Hay alguna aplicación OpenVG para los sistemas de escritorio de Windows que funciona con OpenGL ES 2.0? Puntos de bonificación si funciona sin problemas con la emulación OpenGL ES 2.0 de PowerVR y el EGL 1.3 suministrado.

¿O debería tratar de usar una implementación tradicional de OpenGL 2.0 en el escritorio? Pero tampoco suelen suministrar EGL. No quiero tener dos capas de inicialización (EGL y WGL). ¿O debería?

Nota: esta no es una pregunta de .NET, porque el problema es el mismo sin .NET.

Respuesta

1

He encontrado una fuente cerrada OpenGL ES emulador para OpenGLES 2.0 y otras versiones de este sitio durante la búsqueda de una solución a otro problema que tenía:

http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php

Su código cerrado pero parece que puede utilizar para su desarrollo

Aparte de eso, podría escribir su propia capa de abstracción que pueda alternar entre OpenGL y OpenGL ES: no pude encontrar ninguna disponible en mis búsquedas. Si encuentras uno, avísame porque eso es lo que intento hacer.

Cuestiones relacionadas