Shader kann nicht kompiliert werden

8

Ich folge dem Buch "OpenGL Programming Guide 8. Edition". Ich möchte nur das erste Programm, das in dem Buch auf meinem Mac eingeführt wurde, ausführen.

Es ist Mavericks + Xcode 4.6.1 + Intel HD Grafik 4000. Das Problem ist also, dass der Shader nicht kompiliert werden kann.

Shader-Codes:

%Vor%

Und die Fehlermeldung ist:

%Vor%

Ich habe versucht, Version 420/400/330, keiner von ihnen funktioniert.

Übrigens, das Programm verwendet den neuesten glew 1.10 ( Ссылка ), und ich habe festgestellt, dass ich "glewExperimental = GL_TRUE; " vor dem Aufruf von glewInit. Ansonsten ist "glGenVertexArray" ein NULL-Zeiger. Ich frage mich also, ob Glew Mavericks nicht unterstützt?

    
Mark Zhang 05.01.2014, 08:21
quelle

2 Antworten

21

MacOS verwendet Legacy-Profil als Standard für alle erstellten OpenGLs Kontext. Daher werden standardmäßig nur OpenGL bis 2.1 und GLSL bis 1.20 unterstützt.

Um OpenGL 3.2+ verwenden zu können, müssen Sie zum Hauptprofil wechseln . Die Benennung dort ist ein wenig verwirrend, weil es nur 3,2Core-Profil, aber tatsächlich diese 3,2 oder später (jedes OpenGL-Profil, das vom System / Treiber unterstützt wird, der zu 3,2 rückwärtskompatibel ist)

Für Überangebot (hängt von der Version von Überangebot ab, wenn es funktioniert) ist der Befehl auf MacOS:

%Vor%

Dabei wäre | ... die anderen Optionen, die Sie an glutInitDisplayMode übergeben möchten.

Über glew , normalerweise benötigen Sie glew auf MacOS nicht, da die OpenGL-Ebene in MacOS implementiert ist. Sie sind auf die OpenGL-Funktionen beschränkt, die MacOS bereitstellt / verfügbar macht. Entweder sind die Features über die Header von MacOS verfügbar oder nicht. Dort würde header #include <OpenGL/gl3.h> sein, wobei auch die Benennung fehlleitend ist, es bedeutet nicht nur OpenGL 3, es ist das gleiche wie beim Kontext.

Ich würde empfehlen, GLFW zu verwenden, es ist eine großartige plattformübergreifende Bibliothek, die GLUT ähnelt wie ich denke, besser zu verwenden. Dort würden Sie den Kontext wie folgt wechseln:

%Vor%     
t.niese 05.01.2014, 11:06
quelle
5

Es kann sein, dass Ihr Treiber die benötigte GLSL-Version nicht unterstützt. Ich hatte dieses Problem auf einem Laptop mit Intel HD-Karte auf Neuinstallation von Ubuntu vor einem halben Jahr.

Verwenden Sie glGetString, um herauszufinden, welche Version für Sie verfügbar ist: Ссылка . Zum Beispiel

%Vor%

Hier finden Sie über glewExperimental: Ссылка

    
user3127029 05.01.2014 08:56
quelle

Tags und Links