繁体   English   中英

我可以在OSX中使用EGL吗?

[英]Can I use EGL in OSX?

我试图在C ++应用程序中使用Cairo库,利用它在Mac中的GL加速。 (我使用Quartz后端进行了相同的测试,但性能令人失望。)它说它支持EGL和GLX。 使用GLX需要(外部安装) XQuartz并打开一个XWindow,所以我倾向于EGL:

Apple的编程指南页面告诉我们使用NSOpenGL *, 这个页面和其他人说它使用CGL。

这个 (2012)页面说Mac有EAGL,它只与EGL类似(我想它指的是IOS,而不是MAC,因为它的EAGL参考链接到IOS帮助页面)。

Angle说它支持EGL但它适用于Windows中的Direct3D,据我所知(?)

据说GLFW v3支持(在未来的版本中?)但是通过GLX,它被称为(?)。

Mali表示它有一个适用于Mac的模拟器,但我不知道它是加速还是仅用于其硬件(它还说它只支持不同平台上的EGL子集)。

当使用EGL时,大多数链接指的是移动设备。 我使用的是Mac OS 10.8和XCode 4.6。 目前的情况是什么/我如何(如果可以的话)在Mac(现在)中使用EGL?

是。 cairo已被移植到使用nsopengl。 我会告诉你如何。 如果您有兴趣,请使用示例代码。 性能比quaetz gl快得多。

这是https://github.com/SRA-SiliconValley/cairogles/

clone cairo,checkout branch nsgl。 这个cairo是我们的cairo 1.12.14的分支,与上游cairo相比具有以下增强功能

  1. 支持OpenGL ES 3.0,并支持OpenGL ES 2.0角度MSAA扩展
  2. 用于msaa合成器的填充圆的新凸曲面细分器
  3. 新的cairo API - cairo_rounded_rectangle() - 它针对MSAA合成器进行了优化
  4. 支持四个后端的高斯模糊:GL / GLES,石英,xcb和图像
  5. 支持四个后端的投影和插入:GL / GLES,石英,xcv和带有shaow缓存的图像
  6. 当笔划宽度= 1时支持更快的笔划 - 我们称之为发际线笔划
  7. 为NSOpenGL添加集成
  8. 各种错误修复和优化。

在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

  1. 要编译GLX - ./configure --prefix = your_install_location --enable-gl = yes --enable-glx = yes --enable-nsgl = 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,凝胶或nsgl的cairo。 如果您有兴趣,我可以寄给您。

欢迎任何错误报告/补丁。 我还没有时间让wgl(MS windows)工作。 另外,为cairo设置一个d3d后端会很好,我只是没有时间去做 - 在todo列表上。

请享用

你绝对可以使用角度:

#define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2.h>
#include <EGL/egl.h>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM