我正在尝试在C ++应用程序中使用Cairo库,利用其在Mac中的GL加速。 (我使用Quartz后端进行了相同的测试,但性能令人失望。)它说它支持EGL和GLX。使用GLX需要(外部安装)XQuartz并打开一个XWindow,所以我倾向于EGL:
Apple的programming guide pages告诉使用NSOpenGL *,this页面和其他人说它使用CGL。
This(2012)页面说Mac有EAGL,它只与EGL相似(我认为它指的是IOS,而不是MAC,因为它的EAGL参考链接到IOS帮助页面)。
Angle说它支持EGL,但它适用于Windows中的Direct3D,据我所知(?)
GLFW v3也被称为支持(在未来的版本中?)但是通过GLX,它被称为(?)。
Mali表示它有适用于Mac的模拟器,但我不知道它是加速还是仅用于其硬件(它还说它只支持不同平台上的EGL子集)。 / p>
使用EGL时,大多数链接都指移动设备。我使用的是Mac OS 10.8和XCode 4.6。目前的情况如何/我如何(如果可以的话)在Mac(现在)中使用EGL?
答案 0 :(得分:0)
是肯定的。 cairo已被移植到使用nsopengl。我会告诉你如何。如果您有兴趣,请使用示例代码。性能比quetz gl快得多。
答案 1 :(得分:0)
在这里 https://github.com/SRA-SiliconValley/cairogles/
clone cairo,checkout branch nsgl。这个cairo是我们的cairo 1.12.14的分支,与上游cairo相比有以下增强
在Mac OSX上,您有两种选择:GLX或NSOpenGL - 它们是互斥的。你可以从macport获得mesa glx。 1.编译NSOpenGL - ./configure --prefix = your_install_location --enable-gl = yes --enable-nsgl = yes --enable-glx = no --enable-egl = no
如果您对egl感兴趣(在Mac上没有,但Linux上的mesa 9.1+和各种嵌入式平台表格有egl) ./configure --prefix = your_install_location --enable-gl = no --enable-egl = yes --enable-glesv2 = yes --enable-glesv3 = no =====这为gles2驱动程序编译。
./ confgure --prefix = your_install_location --enable-gl = no --enable-egl = yes --enable-glesv2 = no --enable-glesv3 = yes ====这为glesv3驱动程序编译(mesa 9.1+有glesv3)
您可以使用CFLAGS =“ - g”进行调试,或者使用CFLAGS =“ - O2”进行优化。
cairo gl / gles有3个GL合成器(GL / GLES后端的渲染路径)。默认的是span compositor,它是AA的软件模拟并且很慢。如果您的驱动程序支持MSAA,请使用msaa compositor。要使用MSAA合成器,可以在终端中导出CAIRO_GL_COMPOSITOR = msaa,也可以在程序中导出setenv()。
我有示例代码来显示石英,xcv,图像,glx,gel或nsgl的cairo。如果您有兴趣,我可以发给您。
欢迎任何错误报告/补丁。我还没有时间让wgl(MS windows)工作。另外,为cairo设置一个d3d后端会很好,我只是没有时间去做 - 在todo列表上。
享受
答案 2 :(得分:0)
你绝对可以使用角度:
#define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2.h>
#include <EGL/egl.h>