22

我目前正在尝试在我的桌面上启动并运行 OpenVG。问题来了:我正在/将要为 Windows CE 设备(使用 .NET 紧凑框架)开发一个应用程序,该设备具有硬件加速的 OpenGL ES 2.0 和 OpenVG 1.0.1(基于 TI OMAP35x,如果您有兴趣)。应用程序肯定会使用 OpenVG 进行绘图,如果 OpenVG 不提供某些效果(即模糊),则可能会使用 OpenGL 进行某些效果。

现在我想在没有模拟器的情况下在我的桌面上开发(见这个问题)。所以我想我只是用 P/Invoke 导入 OpenVG,这很容易,因为 OpenVG 人把他们的常量变成了真正的枚举,虽然是一个过程 C API,它很好地转换成一个面向对象的形式(带有一个 Graphics 类用于绘图和 Path、Paint、Stroke 和 Image 对象)。我还设法使用不同名称的 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。它可以工作,但对于实时动画来说仍然太慢了。

我不敢相信这些事情感觉如此不对劲。我真的很想只使用 WindowsMo​​bile.DirectX.Direct3D,PowerVR 为桌面 Windows 提供了一个仿真层,希望最终的 Board Support Package 将 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 的问题是一样的。

4

1 回答 1

1

在寻找解决我遇到的另一个问题的方法时,我从该站点找到了一个用于 OpenGLES 2.0 和其他版本的闭源 OpenGL ES 模拟器:

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

它是封闭源代码,但您似乎可以将其用于您的开发目的。

除此之外,您可以编写自己的抽象层,可以在 OpenGL 和 OpenGL ES 之间切换——我在搜索中找不到可用的抽象层。如果你找到了,请告诉我,因为这就是我想要做的。

于 2011-01-24T07:28:35.577 回答