编译着色器失败,我是否需要英特尔平台上ubuntu的openGL驱动程序?

编译着色器失败,我是否需要英特尔平台上ubuntu的openGL驱动程序?,opengl,ubuntu,glsl,shader,intel,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_V

我试图在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()在编译代码时给了我错误。我不明白这里出了什么问题

我错过什么了吗?或者是由于驱动程序的缺席而引发的错误

我在英特尔i5 windows 8系统上安装了ubuntu 12.04,这是否意味着我在ubuntu上没有openGL图形驱动程序? 有人能告诉我在哪里可以买到吗? 此外,当驱动程序不存在时,openGL不应该在软件中完成全部工作吗

#version 130 core
             ^^^^ wat

OpenGL 3.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;
闪烁日志; glGetShaderiv(顶点着色器、GL\u信息\u日志长度和日志长度); GLchar*comp_log=新的GLchar[log_len+1]; glGetShaderInfoLog(顶点着色器、日志长度、NULL、复合日志);
std::cout着色器的信息日志的输出是什么?这里是。。。0:1(15):预处理器错误:语法错误,意外标识符,需要换行符如果您没有OpenGL驱动程序,则在尝试调用
glCreateShader(…)
时将崩溃。这是一个OpenGL2.0功能,除了OSX之外,没有其他平台附带OpenGL2.0+现成的软件回退实现;您可以通过Mesa在Linux上获得它,但您必须在大多数发行版上设置该软件包。当像Microsoft Windows这样的平台上没有硬件驱动程序时,它会退回到OpenGL 1.1的软件实现。OSX实际上是一个例外而不是规则。哇!!这就是问题所在!非常感谢。