我目前正在尝试在桌面上启动并运行OpenVG。问题出现在这里:我/将要开发一个Windows CE设备的应用程序(带有.NET紧凑框架),它具有硬件加速的OpenGL ES 2.0和OpenVG 1.0.1(基于TI OMAP35x,如果你有兴趣的话) )。该应用程序肯定会使用OpenVG进行绘图,如果OpenVG不提供它们,可能会使用OpenGL(即模糊)。
现在我想在没有模拟器的桌面上进行开发(参见this question)。所以我想我只是用P / Invoke导入OpenVG,这非常简单,因为OpenVG人员将他们的常量变成了真正的枚举,虽然是一个程序性的C API,但它很好地转换为面向对象的形式(带有Graphics类)用于绘图和路径,绘画,描边和图像对象)。我还设法开始differently named DLLs and entry points。哦,我导入了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,问题就是一样。
答案 0 :(得分:1)
我在寻找解决另一个问题的解决方案时,为OpenGLES 2.0及其他版本的网站找到了一个闭源OpenGL ES模拟器:
http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php
它的封闭源代码,但您似乎可以将它用于开发目的。
除此之外,您可以编写自己的抽象层,可以在OpenGL和OpenGL ES之间切换 - 我找不到可用的搜索。如果你找到一个,请告诉我,因为这就是我想要做的事情。