【发布时间】:2013-08-12 17:12:11
【问题描述】:
我正在试验 OpenGL 2.x 和 3.x 教程。这些程序编译并链接,但随后在看似无辜的行上出现段错误,例如
glGenBuffers (1, &m_buffer);
我的main() 以glewInit 和glutInit 开头。 OpenGL 1 程序编译运行良好,似乎是glew封装的新函数。
一个教程说我应该在尝试其他任何事情之前进行此测试:
if (false == glewIsSupported ("GL_VERSION_2_0"))
即使我将版本字符串更改为GL_VERSION_1_0,此测试也总是失败。
#define GL_VERSION_1_3 1是GL/gl.h中最高的此类定义,没有GL/gl3.h或GL/GL3目录。
apt 说我安装了 freeglut3 和 freeglut3-dev,还安装了 mesa-common-dev、libglew-1.6 和 libgl1-mesa-dev,但似乎没有任何可用的 libgl3* 包。
这是一些驱动程序信息(我没有专有驱动程序,集成 Intel Ivy Bridge 显卡和 Nvidia 额外卡,我相信两者都兼容 OpenGL 1.4)
#> glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 3.0 Mesa 9.0
OpenGL shading language version string: 1.30
这一切让我很困惑。
是否有我应该安装的特定 OpenGL2/3/4 包,或者理论上它对于所有人(对于 Ubuntu)来说是相同的开发包?
为什么 GL_VERSION_1_3 是最高定义的版本,而 glGenBuffers 直到 1.5 版才引入?
为什么即使是 1.0 版 glewIsSupported 也会失败?
我得到的印象是我没有实际实现 API 的库和/或驱动程序,但似乎我是根据 glxinfo 实现的,这让我觉得开发库有问题,但我没有对那里发生的事情没有一个连贯的画面。
基本上,我必须做什么才能让我的程序编译/链接/运行?
我知道 Ubuntu 不是一个很好的开发环境,但请不要建议我更改发行版。一定有办法!
【问题讨论】:
-
glewInit()是否返回GLEW_OK?
标签: linux opengl ubuntu opengl-3 mesa