我目前正试图让OpenVG在我的桌面上运行。 问题出现在这里:我/将会开发一个Windows CE设备的应用程序(使用.NET Compact框架),它具有硬件加速OpenGL ES 2.0和OpenVG 1.0.1(基于TI OMAP35x,如果您有兴趣)。 该应用程序肯定会使用OpenVG进行绘制,如果OpenVG不提供这些效果(如模糊),OpenGL可能会产生一些效果。
现在我想在没有模拟器的情况下在我的桌面上开发(参见这个问题 )。 所以我认为我只是用P / Invoke来导入OpenVG,这很容易,因为OpenVG的人把它们的常量变成了真正的枚举,虽然是一个过程式的C API,但它很好地转换成了一个面向对象的forms绘图和path,画图,描边和图像对象)。 我也设法使用不同名称的DLL和入口点 。 呵呵,我导入了EGL 1.3,也很容易翻译成面向对象的API。
直到这一点,听起来相当不错。 我以为我只是使用Khronos的OpenVG参考实现,但是速度很慢。 真的很慢。 你知道,就像清理表面一秒钟 ! 所以我想,很好,OpenVG是一个标准,我只是采取其他的实现之一。 他们中的大多数是基于OpenGL,这是我想要的。 或者不是吗?
不,这不对。 使用EGL 1.3(随PowerVR Windows Emulation SDK提供的OpenGL ES 2.0)创buildOpenGL ES 2.0表面与我尝试的任何OpenVG实现都不兼容。 其中一些需要传统的OpenGL(AmanithVG GLE),PowerVR提供的EGL版本不支持OpenVG。 大多数实现甚至没有EGL,并使用一些奇怪的函数来初始化上下文 – 所有这些都假定已经创build了OpenGL上下文。 OpenGL,而不是OpenGL ES。 叹。
我唯一可以工作的是AmanithVG SRE,它对于软件实现来说非常快,而且不依赖于OpenGL或者EGL。 它的工作原理,但对于实时animation来说还是太慢了。
我不能相信这些事情是错的。 我真的很想使用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的问题是一样的。
我找到一个封闭的源OpenGL ES模拟器的OpenGLES 2.0和本网站的其他版本,同时寻找解决方案,我有另一个问题:
http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php
它的封闭源代码,但它似乎可以用于您的开发目的。
除此之外,您可以编写自己的抽象层,可以在OpenGL和OpenGL ES之间切换 – 我无法从我的搜索中找到可用的抽象层。 如果你找到一个,让我知道,因为这是我想要做的。