【问题标题】:Mesa GLES or GL + glext, which headers/libraries to use (GLUT, GLEW, GLX)Mesa GLES 或 GL + glext,要使用的标头/库(GLUT、GLEW、GLX)
【发布时间】:2012-08-16 07:55:33
【问题描述】:

我正在尝试在 Linux 上将 OpenGL 与 Mesa 库一起使用,但我对实际应该使用的头文件/库组合感到困惑。

GL/gl.h 文件不包含任何 OpenGL 3.0+ 函数,例如 glCreateProgram。然而,这些都在GL/glext.h 文件中,但前提是定义了GL_GLEXT_PROTOTYPES。这将与GL 库链接。

GLES2/gl2.h 包含我需要的所有定义,并且还有一个不同的库GLESv2

Linux 桌面的头文件和库的正确组合是什么?

如果我使用 GLUT、GLEW、GLEX 或 EGL,我还可以添加到此列表中吗?所有这些都是 MESA 的一部分,样本似乎是随机选择的。

【问题讨论】:

    标签: opengl opengl-es mesa


    【解决方案1】:

    IMO 完全取决于您的需求、您想要自己编写的代码(尤其是在 GLUT 的情况下)以及您拥有的目标平台:

    • 如果您也想针对移动平台,GLES 可能是更好的选择(因为它们通常不支持 OpenGL,但支持 OpenGL ES)。

    • 如果您也想以 Windows 为目标,则必须使用 OpenGL,因为不支持 OpenGL ES(除非您使用一些额外的层,例如 Angle library)。

    关于提到的其他库 - 您不需要任何最小程序,但它们可以节省您的时间:

    • GLUT 是一组有用的 sn-ps/功能,通常是“很高兴拥有”,例如一种创建窗口或处理基本纹理加载的快速方法。

    • GLEW 是一个类似的集合,使其更易于使用不在基本 OpenGL 中的扩展(例如提到的glCreateProgram

    【讨论】:

    • EGL 与 GLX 怎么样?我首先在桌面上尝试了 EGL,但没有一个扩展功能起作用(glClear 起作用)。所以现在我正在尝试 GLX。我最终也会以 Android 为目标,而且我已经有 EGL 在那里工作。
    • 它们都提供了一个类似于 GLUT 的附加层,但 EGL 用于 OpenGL ES 而 GLX 用于 OpenGL(在 X Window 系统上;WGL 将是 Windows 版本)。如果您想以 Android 为目标,EGL 可能是您的最佳选择,但是您的桌面可能不支持所有开箱即用的功能,这可能取决于驱动程序(对此部分没有任何经验,抱歉)。
    • GLUT 没有任何纹理加载功能。 GLEW 是OpenGL function loading library
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多