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 には Core コンテキストはありません。

于 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 に答える