2012-08-15 7 views
13

Ich befolge die Tutorials zu ArcSynthes auf OpenGL 3.3 mit 10.8 Mountain Lion und kompiliere und leite die Shader mit GLSL Version 3.30, aber selbst im Core Profil unter Mac OS 10.8 sollte ich keine GLSL 3.30 Unterstützung haben - nur 1,50 (wie im Bild hervorgehoben)Mac OS 10.8 unterstützt GLSL 3.30?

Ist jemand in der Lage zu erklären, wie ich es geschafft haben, diese schwarze Magie zu erreichen?

+0

Tatsächlich, mit einigen weiteren Tests funktioniert es bis zu GLSL 4.10. Nur beim Versuch, 4.20 zu testen, können die Shader nicht kompiliert werden ... – LiarWithFire

+0

Vielleicht erkennt der Shader-Compiler die höheren Shader-Sprachen nicht richtig. Haben Sie versucht, eine 330-spezifische Funktion zu verwenden? – Oskar

+1

Soweit ich weiß, ist das Layout (location = 0) nur in GLSL 3.3 und höher enthalten. – LiarWithFire

Antwort

7

OS X 10.8 unterstützt immer noch nur OpenGL 3.2, aber mit einigen 3.3 Funktionen, wie zum Beispiel der Angabe des Attributorts (#extension GL_ARB_explicit_attrib_location : enable). Der Shader-Compiler akzeptiert Versionen bis 4.10. Sie haben es dort möglicherweise für Kompatibilität oder (SPECULATION) verlassen, die sie ursprünglich 4.1 unterstützen wollten.

Das ist zumindest meine Schlussfolgerung nach ein paar Wochen mit 10.8.

EDIT: Sieht aus wie die 4.10 Spekulationen waren genau richtig. 10.9-10.12 Unterstützung bis Version 4.10. Ich denke, sie wollten Ressourcen auf ihre Metal API ausgeben, anstatt vorwärts zu gehen und Rechen-Shader zu bekommen.

+1

It sollte beachtet werden, dass, wenn "# extension GL_ARB_explicit_attrib_location: enable" tatsächlich funktioniert, es off-spec ist, da OpenGL GL_ARB_explicit_attrib_location nicht ankündigt. Entweder das, oder Apples [OpenGL Erweiterung Seite ist veraltet.] (Https://developer.apple.com/graphicsimaging/opengl/capabilities/) –

+1

Ja. Ich kann überprüfen, dass diese Erweiterung auf ATI und Nvidia in 10.7 und 10.8 funktioniert. Ich habe es aus Versehen herausgefunden, als ich verzögerte Shader nach GLSL 1.5/OS X portieren musste, um die Angabe von Speicherorten im Fragment-Shader zu unterstützen. (Rendering auf mehrere FBO-Attachments) Schon auf die harte Tour gelernt, wie wichtig das ist, und war begeistert, dass ich es nicht auf die harte Tour reparieren musste. – Grimmy