Frage

Gibt es eine Möglichkeit, um herauszufinden, ob ein Licht in GLSL aktiviert ist, das beinhaltet keine Attribute oder die Schaffung einer Tonne von verschiedenen Shadern vorbei?

Was ist mit NVidia C für Graphics (Cg)? Kann ich es mit Cg tun?

Ich bin jetzt überzeugt, dass Sie es nicht tun können. Aber nun frage ich: warum nicht?

War es hilfreich?

Lösung

Nach meinem Verständnis von „aktivieren oder nicht aktivieren“ Teil der GLSL Häufige Fehler dies ist ein philosophischer Grund: Shadern feste Pipeline außer Kraft gesetzt wird geschrieben, deshalb sollten sie nicht auf feste Pipeline Staaten verlassen. Du musst einen anderen Shader für jede Funktion verwenden Sie benötigen.

Auch ich denke, das eine Designauswahl basiert auf der Tatsache sein könnte, dass Äste auf der GPU teuer sind und jemand muss gedacht haben, dass Sie sollten nicht Dinge wie

tun
if (gl_LightSource[0].enabled)
{ ... }

an erster Stelle.

Andere Tipps

unforgiven3 stimmt - GLSL keinen Zugang bieten zu den festen Rohrzustände ermöglichen. Sie müssen es als einheitliches passieren in.

Wenn GLSL etwas wie HLSL (DirectX Äquivalent) ist, was ich vermute, es ist, glaube ich Sie mit dem Übertragen von Attributen stecken geblieben sind.

: - (

Sie können die helle Farbe (0,0,0,0) gesetzt und entweder Zweig auf das, oder lass es einfach Schleife über die jetzt nicht beitragen Lichter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top