GLSL-shader-Programmierung # - version-header-Fehler: Unerkanntes Vorverarbeitung Richtlinie
Ich habe gerade angefangen, GLSL-shader-Programmierung, aber ich bekomme
unrecognized preprocessing directive
wenn ich #version
Direktive an den Präprozessor-Direktiven header stack, obwohl ich alle opengl zugehörigen Headern und Dateien, die in meiner Quell-Datei,
Shader:
#version 400
in vec3 Color;
out vec4 FragColor;
void main()
{
FragColor = vec4(Color, 1.0);
}
wie kann ich dieses Problem lösen?
- Hast du festlegen, welche version Sie verwenden? Wie
#version 150
- Posten Sie Ihre source-code (sowohl glsl und der main-Anwendung), opengl-version und Betriebssystem.
- Wie @JoakimGebart sagte, wir können nicht helfen ohne weitere Informationen. Haben Sie den OpenGL-version läuft?
- für sicher, dass ich die angegebenen version, aber gibt noch der gleiche Fehler!!!
- gut iam stuck an der Stelle, wo der Präprozessor-Direktiven werden erklärt (Anfang Codierung) mein problem ist, dass, warum # - version ist nicht als Richtlinie in den ersten Platz !!! alle anderen Richtlinien hervorgehoben erhalten, außer #version
- wie ich bereits erwähnt iam stuck an den Anfang des Programms, so dass es nicht viel von einem harten Programm-code in der hand der # - version akzeptiert werden soll als Richtlinie in den ersten Platz!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sogar Präprozessor-Direktiven sind illegal ( NVIDIA akzeptiert es, aber AMD nicht! ).
Wenn das nicht hilft, gib uns ein paar mehr Informationen. E. g.
glGetString(GL_VERSION)
undglGetString(GL_VENDOR)
.Bezieht sich auf Ihre Kommentare, die Sie missunderstand, wie ein shader kompiliert wird. Ein shader nicht kompiliert werden kann, die von einem C++ - compiler. Setzen Sie Ihre shader in eine text-Datei und laden Sie es zur Laufzeit, dann rufen Sie die Zusammenstellung Methoden von OpenGL.
!!!
's. Poste bitte deine shader, auch wenn Sie sagen, es ist einfach. Als wir sicher, dass es kein anderes Thema.Den
#version
pre-Prozessor-Befehl ausgeführt wird, wird bei der c++ - Kompilierungglsl
ist nur text-basiert und sollte nicht kompiliert werden. Wenn Sie#include "file"
in eine Kopf-oder.cpp
im Programm löst das kompilieren und Fehler. Daher nicht#include
glsl-Dateien in die Anwendung.