我正在尝试在Linux上使用带有Mesa库的OpenGL,但我对我应该使用的头/库组合感到困惑。
GL/gl.h
文件不包含任何OpenGL 3.0+功能,例如glCreateProgram
。但是,这些文件位于GL/glext.h
文件中,但仅在定义GL_GLEXT_PROTOTYPES
时才有。这将与GL
库链接。
GLES2/gl2.h
包含我需要的所有定义,并且还有一个不同的库GLESv2
。
Linux桌面的标头和库的正确组合是什么?
如果我使用GLUT,GLEW或GLEX或EGL,我还可以添加到此列表中吗?所有这些都是MESA的一部分,样本似乎随机选择。
答案 0 :(得分:1)
IMO完全取决于您的需求,您想要自己编写的代码(特别是在GLUT的情况下)以及您拥有的目标平台:
如果您也希望定位移动平台,GLES可能是更好的选择(因为它们通常不支持OpenGL,但OpenGL ES)。
如果您也希望定位Windows,则必须使用OpenGL,因为不支持OpenGL ES(除非您使用一些额外的层,例如Angle library)。
关于提到的其他库 - 您既不需要最小程序,也可以节省时间:
GLUT是一组有用的片段/功能,通常是“很高兴”,例如一种快速创建窗口或处理基本纹理加载的方法。
GLEW是一个类似的集合,可以更容易地使用不在基本OpenGL中的扩展(例如提到的glCreateProgram
。