GLSL fragment-shader-syntax Fehler

folgende einfache fragment-shader-code schlägt fehl, und mir bleibt eine sinnlose Meldung in der log:
ERROR: 0:1: 'gl_Color' : syntax error syntax error

void main()
{
  vec4 myOutputColor(gl_Color);
  gl_FragColor = myOutputColor;
}

während der folgenden Werke:

void main()
{
  glFragColor = gl_Color;
}

Dieser verwirrt sich mein Geist, wie in Lighthouse3D tutorial gl_Color sagte, ein vec4. Warum kann ich nicht zuordnen, es zu einem anderen vec4?

  • Ist die Fehlermeldung wirklich authentisch? Ist es normal/erwartet, für Sie verpassen die Spalte/Zeile Anzahl, und auch das "syntax-Fehler" text zweimal?
  • ja, die Fehlermeldung ist authentisch (habe ich weggelassen, die ein Unterstrich in den Beispielen, daher auch der edit). Ich weiß nicht wirklich, was ist normal/erwartet mit GLSL info protokolliert werden; in den meisten Fällen die Position des Fehlers nicht angezeigt, nur die problematischen Variablen / Funktions-Namen. (Die Umgebung ist OS X, xcode, OpenGL 2.0-mit einem ATI-Treiber v1.5)
  • bumpbump* Hey slacker! Hat es funktioniert? 😉
  • sicher Tat. Ich zögerte, deren Antwort werde ich akzeptieren, weil beide gut funktionieren, aber ich landete mit Ihnen für die Kürze / die menschliche Lesbarkeit.
  • Die zweite Antwort ist genau so richtig wirklich, aber es gibt keine Notwendigkeit zu verwenden die vec4 () - Konstruktor, da beide vom gleichen Typ sind. Wenn Sie hatte, sagen wir, dass a (r,g,b,w) Tupel können Sie schreiben: vec4 myOutputColor = vec4(r, g, b, w);
  • Sie müssen eine explizite Typ-Konvertierungen – kein casting in GLSL. Nur int, float implizite Konvertierungen sind erlaubt.

InformationsquelleAutor zyndor | 2009-05-19
Schreibe einen Kommentar