2009-04-01 9 views
23

J'essaie actuellement d'installer OpenVG sur mon bureau. Le problème vient ici: je suis/vais développer une application pour un périphérique Windows CE (avec .NET compact framework), qui a accéléré matériellement OpenGL ES 2.0 et OpenVG 1.0.1 (basé sur TI OMAP35x, si vous êtes intéressé). L'application utilisera certainement OpenVG pour le dessin, et probablement OpenGL pour certains effets si OpenVG ne les offre pas (c'est-à-dire le flou).Implémentation OpenVG accélérée par le matériel sur Desktop basée sur OpenGL ES

Maintenant, je voudrais développer sur mon bureau sans l'émulateur (voir this question). Je pensais donc importer simplement OpenVG avec P/Invoke, ce qui était très simple, car les gens d'OpenVG ont fait de leurs constantes de véritables énumérations, et bien qu'une API C procédurale, elle s'est très bien traduite dans une forme orientée objet. pour le dessin et les objets Chemin, Peinture, Contour et Image). J'ai également réussi à aller de l'avant avec differently named DLLs and entry points. Oh, et j'ai importé EGL 1.3, aussi très facile à traduire en API orientée objet.

Jusqu'à maintenant, ça sonnait plutôt bien. Je pensais juste utiliser l'implémentation de référence OpenVG de Khronos, mais c'est lent. Vraiment lent. Vous savez, comme effacer la surface en prenant littéralement un deuxième! J'ai donc pensé, très bien, OpenVG est une norme, je vais juste prendre l'une des autres implémentations. La plupart d'entre eux sont basés sur OpenGL, ce que je veux. Ou n'est-ce pas?

Non, ce n'est pas le cas. La création d'une surface OpenGL ES 2.0 avec EGL 1.3 (fournie avec le SDK d'émulation Windows PowerVR pour OpenGL ES 2.0) n'est pas compatible avec toute implémentation OpenVG que j'ai essayée. Certains d'entre eux nécessitent un OpenGL traditionnel (AmanithVG GLE), la version EGL fournie par PowerVR ne supporte pas OpenVG. La plupart des implémentations n'ont même pas EGL et utilisent des fonctions bizarres pour initialiser le contexte - tout en supposant qu'un contexte OpenGL a déjà été créé. OpenGL, pas OpenGL ES. Soupir. Le seul que je pouvais utiliser était AmanithVG SRE, qui est très rapide pour une implémentation logicielle et ne repose pas sur OpenGL ou EGL. Cela fonctionne, mais c'est encore trop lent pour les animations en temps réel. Je ne peux pas croire que ces choses se sentent si mal. Je suis vraiment tenté d'utiliser simplement WindowsMobile.DirectX.Direct3D, pour lequel PowerVR fournit une couche d'émulation pour Windows Desktop, dans l'espoir que le dernier package de support Board fournira Direct3D comme un wrapper OpenGL ES, comme il semble être sur beaucoup dispositifs.

Ainsi, la question, enfin:

Y at-il la mise en œuvre de OpenVG pour les systèmes Windows Desktop fonctionne avec OpenGL ES 2.0? Points bonus si cela fonctionne correctement avec l'émulation OpenGL ES 2.0 de PowerVR et l'EGL 1.3 fourni. Ou devrais-je simplement essayer d'utiliser une implémentation OpenGL 2.0 traditionnelle sur le bureau? Mais ils ne fournissent généralement pas EGL aussi bien. Je ne veux pas avoir deux couches d'initialisation (EGL et WGL). Ou devrais-je?

Remarque: ce n'est pas une question .NET, car le problème est le même sans .NET.

Répondre

1

J'ai trouvé une source fermée émulateur OpenGL ES pour OpenGLES 2.0 et d'autres versions de ce site en cherchant une solution à un autre problème que j'avais:

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

sa position fermée source, mais il semble que vous pouvez utiliser à vos fins de développement.Sinon, vous pouvez écrire votre propre couche d'abstraction qui peut basculer entre OpenGL et OpenGL ES - je ne pouvais pas en trouver une disponible à partir de mes recherches. Si vous en trouvez un, faites le moi savoir parce que c'est ce que j'essaie de faire.