3

GLSL シェーダー プログラムの空白のウィンドウ (白) が表示されます。私のプログラムは、警告レベル 4 で正常にコンパイルされます。唯一のエラーは、シェーダーからのものです。

両方のシェーダー (頂点とフラグメント) で次のエラーが発生します。

警告: 0:? : ' : バージョン番号は OGL 3.0 前方互換コンテキスト ドライバーで廃止されました

このエラーが発生するフラグメント シェーダ:

エラー 0:1: '': 構文エラー: #version は必須であり、他のトークンの前に設定する必要があります

GLEW を使用して OpenGL 4.0 を実行しており、Intel HD 4000 グラフィック カードを使用しています。

頂点シェーダー:

#version 400

layout (std140) uniform Matrices {
    mat4 pvm;
} ;

in vec4 position;

out vec4 color;

void main()
{
    gl_Position = pvm * position ;
} 

フラグメントシェーダー

#version 330

out vec4 outputF;

void main()
{
    outputF = vec4(1.0, 0.0, 0.0, 1.0);
}

ファイルの読み取り方法:

static char* textFileRead(const char *fileName) {
    char* text;

    if (fileName != NULL) {
        FILE *file = fopen(fileName, "rt");

        if (file != NULL) {
            fseek(file, 0, SEEK_END);
            int count = ftell(file);
            rewind(file);

            if (count > 0) {
                text = (char*)malloc(sizeof(char) * (count + 1));
                count = fread(text, sizeof(char), count, file);
                text[count] = '\0';
            }
            fclose(file);
        }
    }
    return text;
} 

バージョン番号を削除し、バージョン番号を変更して、さまざまなシェーダーを試しました。

4

0 に答える 0