1

我习惯于在大多数 Linux 发行版上链接 libGL.so。mesa 的实现或 NVIDIA 的实现。但是,我真的很想将自己限制在 OpenGL ES 2.X 功能上,所以我试图链接并使用 libGLESv2.so。但是,我看到 libGLESv2.so 动态部分中不存在 glX 函数:

nm --dynamic /usr/lib64/nvidia/libGLESv2.so | grep glX

还尝试再次链接 libGLESv2.so 会导致对 glX 函数的未定义引用。

这引出了我的问题。动态链接 libGLESv2.so 时“GetProcAddress”的正确方法是什么?另外,您如何在没有 glX 的情况下构建适当的上下文?

4

1 回答 1

0

我不确定这对您来说有多容易以及与您的应用程序的相关性如何,但在 pi3d 中,我们使用 libEGL.so(或 Windows 上的 ANGLE 的 libegl.dll)获取绘图上下文。

这是找到并加载动态库的地方

https://github.com/tipam/pi3d/blob/master/pi3d/constants/init .py _

这是创建表面并将其附加到 GLESv2 函数的地方

https://github.com/tipam/pi3d/blob/master/pi3d/util/DisplayOpenGL.py

于 2015-04-30T07:23:26.167 回答