GLEW 着色器似乎不受支持
Posted
技术标签:
【中文标题】GLEW 着色器似乎不受支持【英文标题】:GLEW Shaders seem unsupported 【发布时间】:2014-06-14 14:01:18 【问题描述】:这很奇怪。我想在我的 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 的笔记本电脑,它们都能够使用着色器。 我以正确的顺序(一开始是 glew)包含了所有必要的标题(gl、glut 和 glew),并链接到所有相应的库(以正确的顺序)。 (这不是我第一次使用 OpenGL 和 GLSL)。
我还尝试了软件中心的其他 OpenGL 游戏,它们都可以正常工作。所以驱动程序应该可以正常工作。
(您可能已经猜到了)我正在使用 freeglut、GL 扩展牧马人、Ubuntu 14.04、代码块和 g++。
可能是什么问题?我应该在哪里搜索这个错误?
提前致谢。
【问题讨论】:
在您拥有活动的 GLX 上下文之前,您无法查询这些字符串;) 【参考方案1】:您需要创建一个 OpenGL 上下文并使其处于活动状态。 glGetString
返回一个空指针意味着你没有激活 OpenGL 上下文。
【讨论】:
啊,谢谢。现在我得到了供应商信息的输出。但主要问题仍然存在。它仍然说不支持着色器。也使用glCreateProgram()
给我一个SIGSEV
错误
糟糕,在创建上下文之前我还调用了glewInit()
。现在一切正常。谢谢。以上是关于GLEW 着色器似乎不受支持的主要内容,如果未能解决你的问题,请参考以下文章