Frage

Ich versuche, den besten Weg, um herauszufinden, Informationen zu holen Shadern gerendert. Ein Fenster-Manager-Puffer (das Fenster) zur Ausgabe Rendering verwendet. Auf Benutzerereignis soll ich die Geometrie wählen gemacht. Mit gluPick ist einfach, aber ich versuche, nur mit Shadern zu wählen.

Flexibilität von Shadern doesn'y mir helfen, eine korrekte Lösung zu finden. Ich habe folgende Lösungen gefunden:

  • Rendering des Systems zur Verfügung gestellt Puffer (in der Tat mit Farben). Verwenden Sie glScissor die Wiedergabe auf einem bestimmten Gebiet und Verwendung glReadPixels zum Abrufen von Farben zu begrenzen, abgebildet mit Geometrie Kennungen
  • Rendern ein separates Framebuffer-Objekt. Renderbuffer Formate müssen definiert. Vielleicht kann ich schlicht ganze Zahlen verwenden, um Namen für die Umsetzung?
  • Rendern eines Framebuffer-Objekt verwenden, sowohl für die Darstellung und Kommissionierung. Ein zusätzlich renderbuffer Objektnamen enthält gemacht.

Es scheint, dass die zweite Lösung die beste ist, da nicht die Fensterpuffer nicht alte und es ist möglich, eine individuelle Art und Weise zu spezifizieren Geometrie Namen zu definieren.

Jeder Vorschlag?

P. S:

Da in einem Fragment-Shader erklären i ein Array von vec4 für die Fragmentdaten definieren, wie ich kann Setup einen Bildpuffer einen Renderpuffer nur die R-Komponente aufweist, zu halten, in einem geleimten ganzzahlige internen Format gespeichert?

Ist es möglich, eine Fragment-Shader-Ausgangsgröße mit einem bestimmten zu verknüpfen befestigt macht Puffer?

War es hilfreich?

Lösung

Ich bin nicht sicher, dass Shadern sind wirklich jede Hilfe hier, außer vielleicht als eine Form der Optimierung, wobei Sie auf mehrere Ziele machen und somit in der Lage, Ihre Kommissionier- und Farbwerte in einem Durchgang zu erzeugen.

Wenn Sie Kommissionierung tun Rasterung verwendet, Sie gehen immer mit einem glReadPixels () -Aufruf oder gleichwertig geklebt werden, und Sie sind immer im Grunde gehen zu Ihrer Szene auf einen Puffer von einer Art Zeichnung mit Werten Kommissionierung.

Wenn Sie wirklich kreativ und divergieren von der Norm wollten, könnten Sie versuchen Shadern mit einem Strahlschnitt in der Szene mit den Formen auszuführen. Dies wäre ein gutes Stück von spezialisierter Shader-Entwicklung erfordern, und es ist schwer, den Nutzen zu sehen, es sei denn, Sie sind viel der Kommissionierung tun (vielleicht ein Raytracer?).

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