Wie zeichnet man eine "leuchtende" Linie in OpenGL ES?

8

Könnten Sie bitte etwas Code (irgendeine Sprache) darüber teilen, wie eine texturierte Linie gezeichnet wird (die glatt wäre oder einen glühenden Effekt hätte, blaue Linie, vier Punkte), die aus vielen Punkten besteht, wie auf dem angehängten Bild mit OpenGL ES 1.0.

Was ich versucht habe, war ein GL_LINE_STRIP mit Textur 16x16 oder 1x16 Pixel zu texturieren, aber ohne Erfolg.

    
michael 09.10.2011, 19:43
quelle

1 Antwort

5

In ES 1.0 können Sie die Render-zu-Textur-Funktion kreativ verwenden, um den gewünschten Effekt zu erzielen. Dies ist jedoch in Bezug auf die Füllrate wahrscheinlich kostspielig. Gamasutra hat einen (alten) Artikel darüber, wie Glühen im Tron 2.0-Spiel erreicht wurde - du ' Ich möchte den DirectX 7.0-Kommentaren besondere Aufmerksamkeit widmen, da dies, wie ES 1.0, eine feste Pipeline war. In Ihrem Fall möchten Sie wahrscheinlich nur das Gaußsche Bild anzeigen, anstatt es mit einem Original zu mischen, da nur das Glühen Sie interessiert.

Meine Zusammenfassung des Artikels ist:

  • rendert alle Linien zu einer Textur wie normale, feste Haarlinien. Nennen Sie diese Textur die Quelltextur.
  • Verwende eine lineare horizontale Unschärfe, indem du die gerade gerenderte Quelltextur nimmst und sie fünf Mal in eine andere Textur zeichnest, die ich als horizontale Unschärfebeschaffenheit bezeichnen werde. Zeichnen Sie eine Kopie bei einem Versatz von x = 0 mit der Opazität 1.0, zeichnen Sie zwei weitere Kopien - eine bei x = +1 und eine bei x = -1 - mit einer Deckkraft von 0.63 und zwei abschließende Kopien - eine bei x = +2 und eins bei x = -2 mit einer Opazität von 0,17. Verwenden Sie additive Mischung.
  • wenden Sie eine lineare vertikale Unschärfe an, indem Sie die horizontale Unschärfebeschaffenheit verwenden und im Wesentlichen die gleichen Schritte ausführen, jedoch mit y-Offsets anstelle von x-Offsets.

Diese Opazitätszahlen wurden vom 2-Gauß-Kernel auf dieser Seite abgeleitet. Spiel mit ihnen herum, um den Abfall nach außen zu beeinflussen.

Beachten Sie die zusätzlichen Kosten, die hier anfallen: Sie fügen angeblich zehn Vollbild-Textur-Draws und einen Framebuffer-Swapping hinzu. Sie können wahrscheinlich mit MultiTexturing mit weniger Draws durchkommen. Ein Shader-Ansatz würde wahrscheinlich die horizontalen und vertikalen Schritte in einem einzigen Durchgang ausführen.

    
Tommy 10.10.2011, 16:10
quelle

Tags und Links