我正在尝试用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应该在软件中完成整个事情吗?
答案 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;