AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia OpenGL - rendern eines transparenten Bildes

OpenGL - rendern eines transparenten Bildes

Ein Thema von torud · begonnen am 8. Jun 2016 · letzter Beitrag vom 16. Jul 2016
Antwort Antwort
Seite 1 von 2  1 2   
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

OpenGL - rendern eines transparenten Bildes

  Alt 8. Jun 2016, 17:03
Hallo Wissende,

ich bin noch nicht so sehr mit OpenGL vertraut, habe aber schon herausgefunden, dass man, um Transparenzen benutzen zu können, mit
 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.
Danke
Tom
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: OpenGL - rendern eines transparenten Bildes

  Alt 8. Jun 2016, 17:20
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
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

AW: OpenGL - rendern eines transparenten Bildes

  Alt 8. Jun 2016, 17:23
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.
Danke
Tom
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#4

AW: OpenGL - rendern eines transparenten Bildes

  Alt 9. Jun 2016, 11:44
Geht das bei Dir um 2D oder 3D Objekte, die gerendert werden sollen?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: OpenGL - rendern eines transparenten Bildes

  Alt 9. Jun 2016, 12:17
Insgesamt sind die DelphiGL-Tutorials zu solchen Themen (Blending) lesenswert (wenn auch afaik etwas älter).
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#6

AW: OpenGL - rendern eines transparenten Bildes

  Alt 13. Jul 2016, 12:01
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.
Danke
Tom
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#7

AW: OpenGL - rendern eines transparenten Bildes

  Alt 13. Jul 2016, 12:40
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.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#8

AW: OpenGL - rendern eines transparenten Bildes

  Alt 14. Jul 2016, 07:59
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.
Danke
Tom
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#9

AW: OpenGL - rendern eines transparenten Bildes

  Alt 14. Jul 2016, 09:24
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).
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#10

AW: OpenGL - rendern eines transparenten Bildes

  Alt 14. Jul 2016, 09:52
Dir geht es ums Erstellen des Bildes!?
Hier ein Link.
Ich selbst rendere in ein TBitmap32.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
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