标签: openvg

OpenVG实现?

哪些OpenVG实现存在?

每个人的利弊是什么?

我正在寻找一种高度稳定,快速的渲染实现,仍然在积极维护和开发.

openvg

26
推荐指数
2
解决办法
2万
查看次数

EGL和OpenGL之间有什么关系?

我正在写一个实现开放式VGOpenGL的| ES,这两者取决于Khronos的EGL API,据说是为了便于携带,我猜.

出于乐趣和教育原因,我正在OpenGL ES上编写一个OpenVG实现 - 我没有做过很多渲染工作,我想了解更多有关开放API和实践明确标准的实践(更容易看看我是否得到了正确的结果).

据我了解,EGL提供了一个标准API,用于检索绘图上下文(或者它正确调用的内容),而不是使用多个OS提供的API之一(GLX,WGL等)

在此输入图像描述

我很难相信Khronos会经历这样的努力并将标准OpenGL从循环中移开但事实是,我还没有发现OpenGL(真正的交易)如何或者是否与EGL接口或者它是否只是OpenGL ES.如果OpenGL ES可以使用EGL的绘图上下文,标准OpenGL是否也可以使用?

我对这一切都很陌生,这就是为什么我很兴奋,但我正在做的真正项目是一个Go小部件工具包,它利用OpenVG进行绘图操作,并尽可能使用硬件加速.

如果OpenVG,OpenGL和OpenGL ES依赖于EGL,我认为我的问题可以用"是"或"否"来回答.请记住,我昨晚首先进入了这个主题.

OpenGL使用或依赖于EGL吗?


关闭主题,但没有EGL标记.应该有吗?

opengl opengl-es openvg egl

25
推荐指数
3
解决办法
2万
查看次数

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

我目前正试图在我的桌面上启动并运行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.它可以工作,但它对于实时动画来说仍然太慢了.

我无法相信这些事情是如此错误.我真的很想使用WindowsMo​​bile.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,问题就是一样.

windows desktop opengl-es openvg

22
推荐指数
1
解决办法
4064
查看次数

痛苦地减慢软件向量,特别是CoreGraphics与OpenGL

我正在开发一个iOS应用程序,需要实时绘制Bézier曲线以响应用户的输入.起初,我决定尝试使用CoreGraphics,它具有出色的矢量绘图API.然而,我很快就发现性能很痛苦,极其缓慢,在我的视网膜iPad上只有一条曲线,帧速率开始严重下降.(不可否认,这是一个代码效率低下的快速测试.例如,曲线每帧都重新绘制.但是今天的计算机确实足够快,每隔1/60秒处理一条简单的曲线,对吧?!)

在这个实验之后,我切换到OpenGL和MonkVG库,我感到非常高兴.我现在可以在没有任何帧速率下降的情况下同时渲染HUNDREDS曲线,对保真度的影响很小(对于我的用例).

  1. 我是否有可能以某种方式滥用CoreGraphics(至少比OpenGL解决方案慢几个数量级),还是表现真的那么可怕?我的预感是问题在于CoreGraphics,基于StackOverflow /论坛问题的数量以及有关CG性能的答案.(我已经看到有几个人声称CG并不意味着进入一个运行循环,并且它只应该用于不频繁的渲染.)从技术上讲,为什么会这样呢?
  2. 如果CoreGraphics真的那么慢,Safari究竟如何顺利地工作?我的印象是Safari不是硬件加速的,但它必须同时显示数百个(如果不是数千个)矢量字符而不丢弃任何帧.
  3. 更一般地说,如果没有硬件加速,使用重载矢的应用程序(浏览器,Illustrator等)如何保持如此快速?(据我所知,许多浏览器和图形套件现在都带有硬件加速选项,但默认情况下它通常不会打开.)

更新:

我编写了一个快速测试应用程序来更准确地衡量性能.下面是我的自定义CALayer子类的代码.

将NUM_PATHS设置为5并将NUM_POINTS设置为15(每个路径5个曲线段),代码在非视网膜模式下以20fps运行,在iPad 3上以视网膜模式运行6fps.分析器将CGContextDrawPath列为拥有96%的CPU时间.是的 - 显然,我可以通过限制我的重绘矩形进行优化,但如果我真的需要60fps的全屏矢量动画呢?

OpenGL在早餐时吃这个测试.矢量绘图怎么可能这么慢?

#import "CGTLayer.h"

@implementation CGTLayer

- (id) init
{
    self = [super init];
    if (self)
    {
        self.backgroundColor = [[UIColor grayColor] CGColor];
        displayLink = [[CADisplayLink displayLinkWithTarget:self selector:@selector(updatePoints:)] retain];
        [displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
        initialized = false;

        previousTime = 0;
        frameTimer = 0;
    }
    return self;
}

- (void) updatePoints:(CADisplayLink*)displayLink
{
    for (int i = 0; i < NUM_PATHS; i++)
    {
        for (int j = 0; j < NUM_POINTS; …
Run Code Online (Sandbox Code Playgroud)

opengl-es core-graphics vector-graphics openvg ios

7
推荐指数
1
解决办法
4057
查看次数

在PC上运行简单的GLES/EGL/OpenVG应用程序的最简单方法?

我认为这应该很容易,但是...... geesh!供应商给了我一个相当简单的演示程序,旨在展示一些琐碎的图标动画.目标平台是嵌入式系统(MX51),具有加速的OpenGL ES 2.0/OpenVG和EGL支持.

不幸的是,该演示还对一些Qt实用程序类(例如,QImage)具有恼人的依赖性.如果不是这种依赖,我会编译/运行目标上的东西.但我不喜欢交叉编译Qt只是为了运行这个小小的演示 - 即使嵌入式电路板上有足够的空间.

我希望我能够在标准(ish)Ubuntu 10.04 VM上运行应用程序,并开始遵循这些指示来实现它.我实际上管理了 - 比如,10小时后 - 编译所有内容并获得演示程序的可运行二进制文件.但是,当我运行它时,我看到以下错误:

eglCreateWindowSurface: egl error "EGL_BAD_CONFIG" (0x3005)
Run Code Online (Sandbox Code Playgroud)

叹.在我付出努力之后,这不是我想要看到的.这似乎比应该更困难.

嵌入式GL环境真的是如此贫民窟,我必须使用一些供应商提供的BSP在目标上运行甚至是微不足道的程序吗?从对这个家伙的问题缺乏回应来判断,我认为答案可能是肯定的.但我甚至不关心加速度.我只是想在桌面PC上运行最愚蠢的OpenGL ES 2/OpenVG程序,并了解它的外观.(对我而言,PC是运行Linux还是Windows并不重要.)人们如何做这类事情?

opengl-es openvg

6
推荐指数
1
解决办法
5839
查看次数