我目前正试图在我的桌面上启动并运行OpenVG.问题出现在这里:我/将要开发一个Windows CE设备的应用程序(带有.NET紧凑框架),它具有硬件加速的OpenGL ES 2.0和OpenVG 1.0.1(基于TI OMAP35x,如果你有兴趣的话) ).该应用程序肯定会使用OpenVG进行绘制,如果OpenVG不提供它们(即模糊),可能会使用OpenGL进行某些效果.
现在我想在没有模拟器的桌面上开发(参见这个问题).所以我想我只是用P/Invoke导入OpenVG,这非常简单,因为OpenVG人员将他们的常量变成了真正的枚举,虽然是一个程序性的C API,但它很好地转换为面向对象的形式(带有Graphics类)用于绘制和路径,绘画,描边和图像对象).我还设法使用不同名称的DLL和入口点.哦,我导入了EGL 1.3,也很容易转换为面向对象的API.
在此之前,它听起来相当不错.我以为我只是使用Khronos的OpenVG参考实现,但速度很慢.真的很慢.你知道,像清除表面以字面上一个第二个!所以我认为,很好,OpenVG是一个标准,我将采取其他一个实现.其中大多数都基于OpenGL,这就是我想要的.或者不是吗?
不,这不对.使用EGL 1.3(随OpenGL ES 2.0的PowerVR Windows Emulation SDK提供)创建OpenGL ES 2.0表面与我尝试的任何OpenVG实现都不兼容.其中一些需要传统的OpenGL(AmanithVG GLE),PowerVR提供的EGL版本不支持OpenVG.大多数实现甚至没有EGL并使用一些奇怪的函数来初始化上下文 - 所有这些都假设已经创建了OpenGL上下文.OpenGL,而不是OpenGL ES.叹.
我能够工作的唯一一个是AmanithVG SRE,它对于软件实现非常快,并且不依赖于OpenGL或EGL.它可以工作,但它对于实时动画来说仍然太慢了.
我无法相信这些事情是如此错误.我真的很想使用WindowsMobile.DirectX.Direct3D,PowerVR为桌面Windows提供仿真层,希望最终的Board支持包能够提供Direct3D作为OpenGL ES包装器,就像它似乎在许多设备.
那么,问题,最后:
是否有适用于OpenGL ES 2.0的Windows桌面系统的OpenVG实现?如果使用PowerVR的OpenGL ES 2.0仿真和提供的EGL 1.3,它可以顺利运行.
或者我应该尝试在桌面上使用传统的OpenGL 2.0实现?但他们通常也不提供EGL.我不想有两个初始化层(EGL和WGL).或者我应该?
注意:这不是.NET问题,因为如果没有.NET,问题就是一样.