编译着色器失败,我是否需要在Intel平台上使用ubuntu的openGL驱动程序?

时间:2013-10-18 17:56:38

标签: opengl ubuntu glsl shader intel

我正在尝试用ubuntu上的顶点着色器编写一个简单的程序,就像这样。

const GLchar* vertexSource = (const GLchar*) "#version 130 core \n in vec2 position; \n void main() \n { \n gl_Position = vec4(position, 0.0, 1.0); \n }";

这是我的着色器,我在程序

中正在编译它
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);  
glShaderSource(vertexShader, 1, &vertexSource,  0);  
glCompileShader(vertexShader);

我尝试在glShaderSourceFunction中传递顶点着色器字符串的长度,但这给了我同样的错误。

但是glGetShaderiv()在编译代码时给出了错误。我无法理解这里出了什么问题。

我错过了什么吗?或者由于司机的意外而导致错误?

我在我的Intel i5 windows 8系统上安装了ubuntu 12.04,这是否意味着我在ubuntu上没有openGL图形驱动程序? 有人可以指点我到哪里可以得到它们吗? 此外,当驱动程序不存在时,不是openGL应该在软件中完成整个事情吗?

2 个答案:

答案 0 :(得分:2)

#version 130 core
             ^^^^ wat

OpenGL 3.0中没有Core上下文。

答案 1 :(得分:0)

您可以使用以下代码获取着色器编译日志:

GLint log_len;
glGetShaderiv(vertexshader, GL_INFO_LOG_LENGTH, &log_len);
GLchar* comp_log = new GLchar[log_len + 1];
glGetShaderInfoLog(vertexshader, log_len, NULL, comp_log);
std::cout << "Shader compilation result: " << comp_log << std::endl;
delete[] comp_log;