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;
}
バージョン番号を削除し、バージョン番号を変更して、さまざまなシェーダーを試しました。