0

我正在尝试在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 不应该在软件中完成全部工作吗?

4

2 回答 2

2
#version 130 core
             ^^^^ wat

OpenGL 3.0 中没有核心上下文。

于 2013-10-18T18:26:35.070 回答
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;
于 2013-10-18T18:32:00.200 回答