2014-06-14 47 views
0

这很奇怪。我想在我的gl程序中实现着色器。 但GLEW告诉我,着色器是我的系统上不支持:GLEW着色器似乎不受支持

//glut init and glew init ... 

if (GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader) 
    printf("Ready for GLSL\n"); 
else 
{ 
    printf("Not totally ready :(\n"); 
    printf("VENDOR = %s\n", glGetString(GL_VENDOR)) ; 
    printf("RENDERER = %s\n", glGetString(GL_RENDERER)) ; 
    printf("VERSION = %s\n", glGetString(GL_VERSION)) ; 

    exit(1); 
} 

也GLEW不能给我说说我的显卡的任何信息。上面的代码产生以下:

VENDOR = (null) 
RENDERER = (null) 
VERSION = (null) 

我使用一台笔记本电脑与英特尔HD 3000和一个专用的Nvidia GTM 525这两者都是能够使用的着色器。 我以正确的顺序(首先是glew)包含所有必要的标题(gl,glut和glew),并链接到所有相应的库(以正确的顺序)。 (这不是我第一次使用OpenGL和GLSL)。

我也试过了软件中心的其他OpenGL游戏,他们工作。所以司机应该正常工作。

(正如你可能已经猜到的那样)我正在使用freeglut,GL扩展文件管理器,Ubuntu 14.04,codeblocks和g ++。

可能是什么问题?我应该在哪里搜索这个错误?

在此先感谢。

+1

在激活GLX上下文之前,您无法查询这些字符串;) –

回答

1

您需要创建一个OpenGL上下文并将其激活。 glGetString返回一个空指针表示,你没有OpenGL上下文活动。

+0

啊谢谢。现在我得到供应商信息的输出。但主要问题仍然存在。它仍然说着色器不受支持。同样使用'glCreateProgram()'给我一个'SIGSEV'错误 – Scindix

+0

在创建上下文之前,我还调用了'glewInit()'。现在一切正常。谢谢。 – Scindix

相关问题