Ich habe mehrere Objekte in OpenGL und ich möchte das ausgewählte Objekt markieren. Meine Idee war, einen GLSL-Shader zu verwenden, um die ausgewählte Farbe hinzuzufügen. Wie kann ich die ursprüngliche Farbe des Pixels im Fragment-Shader erhalten? Ich könnte die Farbe in der Textur nachschlagen, aber wenn es mehr als eine Textur gibt?Wie schreibe ich einen generischen GLSL-Shader um ein Objekt einzufärben
Antwort
Wenn Sie Ihr ausgewähltes Objekt mit einem bestimmten Shader rendern möchten, müssen Sie einen Shader erstellen, der dasselbe Verhalten wie das normale Rendern Ihrer Objekte (Beleuchtung, Texturierung, ...) aufweist. Das bedeutet, dass Sie die Farbe des Pixels selbst berechnen müssen.
Wenn Sie beabsichtigen, alle Ihre Objekte zu rendern und dann Ihre Auswahl hinzuzufügen, dann ist es unmöglich, die Farbe des Framebuffer-Pixels von Ihrem Fragment-Shader abzurufen (Sie müssen eine Textur aus Ihrem Framebuffer erstellen und verwenden, aber es ist außerhalb des Geltungsbereichs, denke ich).
Option A) Sie können eine Farbe auf die aktuellen diffuse Farbe/Textur hinzufügen und diese Fragment-Shader gelten nur für den ausgewählten: color = ... gl_FragColor = Mix (Farbe, selection, 0,5);
Option B) Sie zu einem Bildpuffer übertragen, und postproccess das Objekt der Farbe
Die Optionen hinzufügen, hängt von Ihrer Fähigkeit, die Shader und identifizieren das Objekt zu ändern.
- 1. Wie schreibe/schreibe ich ein komplexes Objekt mit XmlWriter/XmlReader
- 2. Wie schreibe ich ein QTreeWidgetItem um
- 3. Wie schreibe ich ein Tag?
- 4. Wie schreibe ich einen Linker
- 5. Wie schreibe ich einen Testfall für eine Methode, die Objekt
- 6. Wie schreibe ich einen Code um .fla Datei zu lesen?
- 7. Tornado schreibe ein Jsonp-Objekt
- 8. Wie schreibe ich einen Bitstrom
- 9. Wie schreibe ich einen Django-Test?
- 10. Wie schreibe ich ein Objekt in Datei in C++
- 11. Wie schreibe ich einen Getter und Setter für ein Wörterbuch?
- 12. Wie schreibe ich einen Karma-Test für ein Versprechen
- 13. Wie schreibe ich Perl-Objekt mit Plugins?
- 14. Rails 4 - Wie schreibe ich einen Bereich
- 15. Wie schreibe ich in einen Duplex-Stream?
- 16. Wie schreibe ich einen Fließtext für die Pfeilfunktion mit dem generischen Typ
- 17. Wie kann ich ein Objekt in ein generisches Objekt umwandeln?
- 18. Erstelle ein Objekt einer generischen Klasse
- 19. Wie schreibe ich einen Bereich in Rails?
- 20. Wie schreibe ich einen Test für ein ggplot Plot
- 21. Java: Wie schreibe ich einen WSI-Server
- 22. Wie schreibe ich einen Integrationstest in NUnit?
- 23. Wie schreibe ich einen benutzerdefinierten hübschen Drucker
- 24. Wie schreibe ich einen Abstand active record
- 25. Wie schreibe ich einen einfachen USB-Treiber?
- 26. Wie schreibe ich einen PDF-Editor?
- 27. Wie schreibe ich einen einfachen SSH-Client?
- 28. Wie schreibe ich ein Filterprogramm in C?
- 29. Wie schreibe ich einen Mono-Daemon
- 30. Wie schreibe ich ein Clojure-Makro, um einen regulären Ausdruck aus einem String zu erstellen?