windows - Implementación de OpenVG acelerada por hardware en el escritorio basada en OpenGL ES
opengl-es desktop (1)
Actualmente estoy intentando que OpenVG esté funcionando en mi escritorio. El problema viene aquí: Estoy / estaré desarrollando una aplicación para un dispositivo Windows CE (con .NET compact framework), que tiene OpenGL ES 2.0 y OpenVG 1.0.1 acelerados por hardware (basado en TI OMAP35x, si está interesado) ). La aplicación definitivamente utilizará OpenVG para dibujar, y probablemente OpenGL para algunos efectos si OpenVG no los ofrece (es decir, desenfoque).
Ahora me gustaría desarrollar en mi escritorio sin el emulador (vea esta pregunta ). Así que pensé que solo importaba OpenVG con P / Invoke, que era bastante fácil, ya que la gente de OpenVG convertía sus constantes en enumeraciones reales y, a pesar de ser una C de procedimiento, se traducía muy bien en una forma orientada a objetos (con una clase de Gráficos para objetos de dibujo y Trayectoria, Pintura, Trazo e Imagen). También me las arreglé para ponerme en marcha con DLL y puntos de entrada con nombres diferentes . Ah, e importé EGL 1.3, que también es bastante fácil de traducir a una API orientada a objetos.
Hasta este punto, sonaba bastante bien. Pensé que solo 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é, bien, OpenVG es un estándar, solo tomaré una de las otras implementaciones. La mayoría de ellos están basados en OpenGL, que es lo que quiero. ¿O no es así?
No, no es. La creación de una superficie OpenGL ES 2.0 con EGL 1.3 (suministrada con el SDK de emulación de Windows PowerVR para OpenGL ES 2.0) no es compatible con ninguna implementación de OpenVG que probé. Algunos de ellos requieren OpenGL tradicional (AmanithVG GLE), la versión EGL suministrada 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 OpenGL. OpenGL, no OpenGL ES. Suspiro.
El único con el que pude trabajar fue AmanithVG SRE, que es muy rápido para una implementación de software y no depende de OpenGL o EGL. Funciona, pero aún 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 el cual PowerVR suministra una capa de emulación para Desktop Windows, con la esperanza de que el paquete de soporte de la placa final proporcione Direct3D como un contenedor de OpenGL ES, como parece ser en muchos dispositivos
Entonces, la pregunta, finalmente:
¿Existe alguna implementación de OpenVG para los sistemas de escritorio de Windows que funcione 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 intentar usar una implementación tradicional de OpenGL 2.0 en el escritorio? Pero normalmente no están suministrando EGL también. No quiero tener dos capas de inicialización (EGL y WGL). ¿O debería?
Nota: esta no es una pregunta .NET, porque el problema es el mismo sin .NET.
Encontré un emulador OpenGL ES de código cerrado para OpenGLES 2.0 y otras versiones de este sitio mientras buscaba una solución a otro problema que tuve:
http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php
Es de código cerrado, pero parece que puedes usarlo para tus propósitos de desarrollo.
Aparte de eso, puedes escribir tu propia capa de abstracción que puede cambiar entre OpenGL y OpenGL ES; no pude encontrar una disponible en mis búsquedas. Si encuentra uno, avíseme porque eso es lo que estoy tratando de hacer.