Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   OpenGL - rendern eines transparenten Bildes (https://www.delphipraxis.net/189402-opengl-rendern-eines-transparenten-bildes.html)

torud 8. Jun 2016 17:03

OpenGL - rendern eines transparenten Bildes
 
Hallo Wissende,

ich bin noch nicht so sehr mit OpenGL vertraut, habe aber schon herausgefunden, dass man, um Transparenzen benutzen zu können, mit
Delphi-Quellcode:
 glEnable(GL_BLEND);
arbeiten muss.

Könnte mir jemand von Euch zeigen, wie ich einfach nur mit OpenGL ein transparentes Bild rendere?
Eigentlich möchte ich als Basis ein solches Objekt in OpenGL erstellen und darauf dann andere OpenGL-Objekte platzieren und alles zusammen rendern. Also Ergebnis würde in der Regel immer ein Bild herauskommen, dass auch transparente Anteile hat.

Bei den bisher verwendeten Tutorials ist es leider immer so, dass das gerenderte Bild zwar einen Alpha-Kanal hat, dieser aber keine transparenten Bereiche aufweist.

Ich wäre sehr dankbar, wenn mir hier jemand eine kleine Starthilfe geben könnte.
RenderToTga oder RenderToPng wäre toll - wenn möglich.

Vielleicht hilft es ja auch anderen, die auch dieses Problem haben.

EWeiss 8. Jun 2016 17:20

AW: OpenGL - rendern eines transparenten Bildes
 
Delphi-Quellcode:
//Texture wird vorher gebunden
 glDisable(GL_DEPTH_TEST);
 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_ALPHA,GL_ONE);
//Render...
 glDisable(GL_BLEND);
 glEnable(GL_DEPTH_TEST);
gruss

torud 8. Jun 2016 17:23

AW: OpenGL - rendern eines transparenten Bildes
 
Hallo,

vielen Dank - ich versuchs mal damit. Kannst Du mir noch einen Tipp geben, wie ich dann Speichern kann?

Hab gerade kein Delphi zur Hand, check den Kram aber in 1 Stunde.

Jens01 9. Jun 2016 11:44

AW: OpenGL - rendern eines transparenten Bildes
 
Geht das bei Dir um 2D oder 3D Objekte, die gerendert werden sollen?

BUG 9. Jun 2016 12:17

AW: OpenGL - rendern eines transparenten Bildes
 
Insgesamt sind die DelphiGL-Tutorials zu solchen Themen (Blending) lesenswert (wenn auch afaik etwas älter).

torud 13. Jul 2016 12:01

AW: OpenGL - rendern eines transparenten Bildes
 
Zitat:

Zitat von Jens01 (Beitrag 1339820)
Geht das bei Dir um 2D oder 3D Objekte, die gerendert werden sollen?

In der Masse nutzen wir 2D-Objekte, wie Bilder und Text-Objekte, benötigen aber hin und wieder auch 3D-Objekte.
Ich hätte auch ein Beispielprojekt am Start, allerdings würde das Kompilat bei den meisten von Euch einen Fehler aufwerfen, weil eine spezielle VIdeokarte nicht gefunden würde.

Jens01 13. Jul 2016 12:40

AW: OpenGL - rendern eines transparenten Bildes
 
Ich glaube, ich meinte, wenn Du nur 2D-Objekte hast, das bei Transparenz nicht mit OpenGL zu machen, sondern vllt mit Graphics32 o.ä..
Transparenz geht bei OpenGL mit diesem Blending, wie hier schon angesprochen. Es kann aber auch schnell sehr kompliziert werden, wenn eine Tiefensortierung notwendig wird. Dann benötigt man Shaderverfahren.

torud 14. Jul 2016 07:59

AW: OpenGL - rendern eines transparenten Bildes
 
Ja, wenn es einfach nur um das Erstellen von statischen Bildern gegangen wäre, würde GDI vielleicht sogar reichen. Da aber die ein oder andere Animation zu realisieren wäre und das im Full-HD-Bereich, kommt das nicht in Frage.

Jens01 14. Jul 2016 09:24

AW: OpenGL - rendern eines transparenten Bildes
 
Naja, dann OpenGL.
Bei Transparenz geht vieles mit dem Blending. Da gibt es auch Tricks mit Mehrfachrenderung (siehe Tutorials bei DGL). Probleme kommen aber dann, wenn es darum geht, ob das eine transparente Objekt vor oder hinter einem anderen steht. Oder sogar in einem anderen Objekt. Man kann die Objekte dann nach der Tiefe sortieren oder man nutzt ein Verfahren mit Shadern (OIT Order-Independent Transparency).

Jens01 14. Jul 2016 09:52

AW: OpenGL - rendern eines transparenten Bildes
 
Dir geht es ums Erstellen des Bildes!?
Hier ein Link.
Ich selbst rendere in ein TBitmap32.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz