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 着色器似乎不受支持的主要内容,如果未能解决你的问题,请参考以下文章

为啥片段着色器没有附加?

OpenGL着色器不绘制[关闭]

opengl 几何着色器

用着色器编写第一个程序

设置基本着色器程序 - GLchar 和 file_contents 未定义?

GLEW 链接错误 [重复]