在Debian上使用SDL,GLEW时glGenBuffers分段错误

时间:2014-08-06 12:58:44

标签: c++ linux opengl sdl

我正在使用SDL + OpenGL开发一个引擎项目。它在同一台计算机的窗口下工作(所以相同的图形硬件)没有问题,但安装Debian后我没有任何熟悉,当我尝试编译项目时(与包含文件相关的小变化(“/” - “\”问))在Debian / Linux下使用gcc,它说“不支持GLSL 3.30。支持的版本是:1.00 ES,1.10,1.20”。我试了一下它只是运行一些旧版本的功能,例如glClear,当版本设置不好时,之前只出现一个青色窗口,所以我认为我应该首先安装驱动程序。从包管理器安装fglrx-driver(apt-get install fglrx-driver) ,通过命令aticonfig --initial配置它作为在安装的某个地方建议的终端上弹出的消息。配置后,我试图重新编译的应用程序给出了一个错误,如“Segmentation Fault”,我认识到像glGenBuffer这样的函数, glBindBuffer导致错误,新版本的一些功能在离开“固定管道系统”之后单独弃用。现在,问题仍然与版本/上下文绑定有关,如果是这样,我该怎么做才能够在Debian的任何c ++应用程序中正确调用OpenGL 3.3+函数。(编译的参数是g++ -o program source.cpp `sdl2-config --cflags --libs` -lGLEW -lGL),如果没有,问题是什么,你建议如何解决这个问题?

额外信息:

要检查fglrx的版本,ls /var/lib/dkms/fglrx/ outputs 12-6+point kernel-3.2.0-4-amd64-x86_64

fglrx输出:
display: :0 screen: 0 OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD TURKS OpenGL version string: 1.4 (2.1 Mesa 8.0.5)

尽管here显示如下: display: :0 screen: 0 OpenGL vendor string: Advanced Micro Devices, Inc. OpenGL renderer string: ATI Radeon HD 4300/4500 Series
OpenGL version string: 3.3.11399 Compatibility Profile Context
(只看一下网站的第二项)

如果问题是关于版本指明这些错误:
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION,4); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION,3); (我也试过1-4,2-3,1-3作为次要专业)

注意,我没有使用源自Debian 7(wheezy)的Ubuntu,操作系统是Debian,显卡是: 01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Thames XT/GL [Radeon HD 7600M Series] lspci | grep VGA)的输出

目前,我知道Mesa是昨天一项旧研究的OpenGL规范的开源实现。因此,如果问题是与OpenGL的抽象规范如何与硬件进行通信相关的配置,我如何才能从mesa切换到fglrx以实现OpenGL 3.3及更高版本?最后,您建议使用哪种免费或非免费的驱动器?

0 个答案:

没有答案