这很奇怪。我想在我的gl程序中实现着色器。 但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)
我正在使用配备Intel HD 3000和专用Nvidia gtm 525的笔记本电脑,它们都能够使用着色器。 我按正确的顺序包括了所有必要的标题(gl,glut和glew)(首先是glew)并链接到所有相应的库(按照正确的顺序)。 (这不是我第一次使用OpenGL和GLSL)。
我还尝试过软件中心的其他OpenGL游戏,但他们都在工作。所以司机应该正常工作。
(正如您可能已经猜到的)我正在使用freeglut,GL扩展争吵者,Ubuntu 14.04,代码块和g ++。
可能是什么问题?我应该在哪里搜索此错误?
提前致谢。
答案 0 :(得分:1)
您需要创建一个OpenGL上下文并使其处于活动状态。 glGetString
返回空指针意味着,您没有活动的OpenGL上下文。