Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EGL和OpenGL之间的关系是什么?_Opengl_Opengl Es_Egl_Openvg - Fatal编程技术网

EGL和OpenGL之间的关系是什么?

EGL和OpenGL之间的关系是什么?,opengl,opengl-es,egl,openvg,Opengl,Opengl Es,Egl,Openvg,我正在为和编写一个实现,这两个都依赖于,我想应该是为了简化可移植性 出于好玩和教育的原因,我正在OpenGL ES之上编写一个OpenVG的实现——我还没有做过很多渲染工作,我想了解更多关于OpenAPI的信息,并练习实现定义良好的标准(更容易看到我是否得到了正确的结果) 据我所知,EGL提供了一个标准API来检索图形上下文(或者它被正确地称为什么),而不是使用操作系统提供的多个API(GLX、WGL等)中的一个 我很难相信Khronos会做出这样的努力,将标准OpenGL排除在外,但问题是,

我正在为和编写一个实现,这两个都依赖于,我想应该是为了简化可移植性

出于好玩和教育的原因,我正在OpenGL ES之上编写一个OpenVG的实现——我还没有做过很多渲染工作,我想了解更多关于OpenAPI的信息,并练习实现定义良好的标准(更容易看到我是否得到了正确的结果)

据我所知,EGL提供了一个标准API来检索图形上下文(或者它被正确地称为什么),而不是使用操作系统提供的多个API(GLX、WGL等)中的一个

我很难相信Khronos会做出这样的努力,将标准OpenGL排除在外,但问题是,我还没有发现OpenGL(真正的交易)是如何或是否与EGL接口的,或者它是否只是OpenGL ES。如果OpenGL ES可以使用EGL中的绘图上下文,那么标准OpenGL也可以工作吗

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

如果OpenVG、OpenGL和OpenGL ES依赖于EGL,我想我的问题可以用“是”或“否”来回答。请记住,我昨天晚上首先讨论了这个问题

OpenGL使用还是依赖EGL



脱离主题,但没有EGL标记。应该有吗?

OpenGL和EGL之间没有关系。EGL通常不在桌面上运行,并且无法通过EGL创建桌面OpenGL上下文

OpenGL上下文由特定于平台的API创建和管理。在Windows上,使用WGL API。在基于X11的平台上,使用GLX。等等


去年,Khronos发出了一些关于创建一个可以在桌面上工作并生成OpenGL上下文的EGL版本的噪音,但到目前为止,没有任何结果。

您可以通过
eglBindAPI(EGLenum API)
EGL\U OpenGL\U API绑定为线程的当前API;随后的eglCreateContext将创建OpenGL渲染上下文

从第页第42页:

本节中描述的一些函数使用当前的渲染API,该API是基于每个线程设置的 打电话

EGLBoolean eglBindAPI(EGLenum api)

api必须指定一个受支持的客户端api,EGL\U OPENGL\U api, EGL_OPENGL_ES_API或EGL_OPENVG_API

需要注意的是,EGL实现在其权限范围内,不支持
EGL\u OPENGL\u API
,而是在尝试绑定时生成
EGL\u BAD\u参数
错误

如果不拿起AGL/WGL/GLX积垢,也很难链接到libGL;这些平台上的ABI要求libGL提供这些入口点。取决于您使用的平台,这可能是问题,也可能不是问题

OpenGL使用还是依赖EGL

不可以。您可以在没有EGL的情况下运行OpenGL

但EGL实现可以创建桌面OpenGL上下文。这是因为EGL允许EGL_OPENGL_API、EGL_OPENGL_ES_API或EGL_OPENVG_API

但如果你问:

OpenGL ES使用还是依赖EGL

答案是肯定的,但也有例外

目前(2015年),您有几个OpenGL ES的实现依赖于EGL来创建图形上下文:Google ANGLE、PowerVR、ARM MALI、Adreno、AMD、Mesa等

但在最新版本的和Intel驱动程序上,您也可以直接请求OpenGL ES上下文,其中扩展WGL_EXT_create_context_ES_profileWGL_EXT_create_context_es2_profile可用(Windows)。在Unix平台上也是如此,在Unix平台上,GLX\u EXT\u create\u context\u es\u profileGLX\u EXT\u create\u context\u es2\u profile提供了扩展


EGL的目的是通过创建一种可移植的标准方式来初始化和获取受支持的图形API的上下文,从而简化开发人员的生活,而不必担心特定于平台的问题,如WGL、GLX等。这是EGL实现者的问题,不是最终的程序员。

@humanityANDpeace:粗略地看一下Mesa的网站,我不清楚您是否可以使用Mesa3D和EGL创建桌面OpenGL上下文。此外,韦兰的分布也不是很广。因此,我认为目前没有必要改变这里所说的任何事情。如果Mir被Linux广泛采用,那么可能。或者如果NVIDIA能够运行大量的桌面OpenGL,也许。但目前,“EGL一般不会在台式机上运行”的说法仍然是正确的。您的回复给我留下了深刻的印象,谢谢!无论如何,我认为我的评论是为了鼓励人们重新思考EGL和OpenGL的关系(这是最初的问题)。我过去和现在的印象都是有了一些发展,而今天(大约3年后)有很多EGL应用于台式机的案例。仍然心存感激的是,我无法理解你为什么会提出Mesa、Wayland和最令人困惑的UbuntuMIR。@X11上的Nicolas EGL至少从2011年(可能更早)开始就支持在Mesa中创建桌面OpenGL上下文。Wayland显示服务器协议使用EGL,这个答案现在已经完全过时了。这个答案已经过时得无可救药了,它能被更新或删除吗?你的Go widget项目被放弃了吗?差不多。我会把整个事情描述成一个心理自慰。我也在做同样的心理自慰,哈哈,我在OpenGL上写了一个2D加速图形库,然后是ui工具包,还有很多自慰。是什么让你放弃的?我记不起确切的原因了。今年圣诞节,我确实又看了一次渲染器,但我怀疑我是否能制作出任何东西,因为我在工作相关的方面已经忙得不可开交了:我在我的Ubuntu 14.04上安装了NVIDIA的最新驱动程序(版本364),我发现有很多