基于OpenGL ES的桌面硬件加速OpenVG实现

22

我目前正在尝试在我的桌面上运行OpenVG。问题出现了:我将要为一个带有.NET compact framework的Windows CE设备(基于TI OMAP35x,如果您感兴趣)开发应用程序,该设备具有硬件加速的OpenGL ES 2.0和OpenVG 1.0.1。该应用程序肯定会使用OpenVG进行绘制,并且很可能会使用OpenGL进行一些特效处理,例如模糊(如果OpenVG不提供这些特效)。

现在,我想在没有模拟器的情况下在我的桌面上进行开发(请参见此问题)。因此,我想使用P/Invoke导入OpenVG,这非常容易,因为OpenVG人员将其常量转换为实际枚举,并且虽然是过程式C API,但它非常适合转换为面向对象形式(使用Graphics类进行绘制以及路径、画笔、描边和图像对象)。我还成功地使用了具有不同名称的DLL和入口点。哦,我还导入了EGL 1.3,也很容易转换为面向对象的API。

到此为止,听起来一切都很好。我想我会使用Khronos的OpenVG参考实现,但它非常慢。真的很慢。你知道,清除表面需要整整一秒钟!所以我想,好吧,OpenVG是一种标准,我只需取其中的另一种实现即可。它们大多数基于OpenGL,这正是我想要的。或者不是吗?

不是的。使用EGL 1.3(提供了PowerVR Windows模拟器SDK for OpenGL ES 2.0)创建OpenGL ES 2.0表面与我尝试过的任何OpenVG实现都不兼容。其中一些需要传统的OpenGL(AmanithVG GLE),由PowerVR提供的EGL版本不支持OpenVG。大多数实现甚至没有EGL,并使用一些奇怪的函数来初始化上下文-所有这些都假定已经创建了一个OpenGL环境,而不是OpenGL ES。唉。
唯一能够运行的是AmanithVG SRE,它是一个非常快的软件实现,不依赖于OpenGL或EGL。它工作正常,但对于实时动画来说仍然太慢了。
我简直不敢相信这些东西感觉如此错误。我真的很想使用WindowsMobile.DirectX.Direct3D,因为PowerVR为Desktop Windows提供了一个仿真层,希望最终的板支持包将提供Direct3D作为OpenGL ES包装器,就像在许多设备上一样。
所以,最终的问题是:
是否有任何适用于Windows桌面系统的OpenVG实现,可以与OpenGL ES 2.0配合使用?如果它能平滑地与PowerVR的OpenGL ES 2.0仿真和提供的EGL 1.3一起工作,那就再好不过了。
还是应该在桌面上尝试使用传统的OpenGL 2.0实现?但它们通常也不提供EGL。我不想要两个初始化层(EGL和WGL)。或者我应该?
注意:这不是.NET问题,因为即使没有.NET,问题仍然存在。
1个回答

1

在寻找解决另一个问题时,我在这个网站上发现了一个闭源的OpenGL ES模拟器,支持OpenGLES 2.0和其他版本:

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

它是闭源的,但似乎你可以将其用于开发目的。

除此之外,你可以编写自己的抽象层,可以在OpenGL和OpenGL ES之间切换--我在搜索中找不到可用的抽象层。如果你找到了一个,请告诉我,因为这就是我正在尝试做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接