Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 04:35

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rendern in ein Bitmap mittels FBO
BeitragVerfasst: Mo Dez 05, 2011 13:30 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Wie kann man in ein 24bit Bitmap rendern?
PFD_DRAW_TO_BITMAP im Renderformat wäre möglich, jedoch muss dafür ein 2. RC geschaffen werden => Dies hat einige zeitliche Nachteile insbesondere bei der jeweiligen Textur/Displaylist Erstellung => nicht optimal

Dies sollte doch auch per FBO gehen (da brauch ich ja keinen neuen RC). Jedoch würde ich gerne ein Bitmap erhalten und nicht eine Textutre (und auf die Textur auch am besten komplett verzichten) - also weing Umwege. Wie bekomme ich denn die Bits des Bitmaps heraus und kann wie kann man dann das BMP speichen (oder als TBitmap haben)?

Hat jemand da ne Hilfestellung - Code?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Dez 05, 2011 16:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
am einfachsten ist wohl glreadpixels, es ist allerdings immer etwas langsam etwas aus dem VRAM in den normalen RAM
zu holen bzw umgekehrt (was du tun musst wenn du Dateien schreiben willst).

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Dez 05, 2011 23:21 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
"Ja, ich habe mir etwas zusammengebaut und hier beschieben:
http://www.delphigl.com/forum/viewtopic.php?f=2&t=9930&p=86094#p86094
Der Post ganz unten."


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Dez 06, 2011 20:47 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Ja, aber in jedem Fall muss ich bei den Beschreibungen eine Texture nutzen (die ich ja gar nicht benötige).
Dies bringt wieder eigene Problem mit (Max. Größe, Power of 2, Speicher....).

Get es nicht auch ohne Textur - ich muss doch nur an den Color buffer!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 07, 2011 09:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ein FBO benötigt doch so oder so mindestens eine Zieltextur, also um Texturen wirst du nicht herumkommen. POT ist auf modernen Grafikkarten eh kein Problem mehr, die max. Größe sollte auch zuzmindest gleich den Viewportdimensionen sein, sprich kein Nachteil.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 07, 2011 10:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Du darfst nicht davon ausgehen das du direkten Zugriff mit der HW, die dein OS für IO benutzt, auf den Buffer, in den OpenGL schreibt, hast. Da die Hardware, für die
deine OpenGL Implementierung ausgelegt ist, diese Art von Zugriff, in der Regel, nicht unterstützt. Soll heißen:
-Entweder du verzichtest auf die Vorteile der jeweiligen Hardware oder du musst kopieren (da musst du schauen was schneller ist)
-Sofern keine entprechenden Extensions geladen werden können, musst du mit den Standart Objekten von OpenGL leben.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 07, 2011 22:48 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Ich habe mehrfach im Internet folgendes gefunden:

At this point we still don’t have a way of writing colour information to the FBO, so that is what we are going to add now. There are two ways of going about it:
•Attach a colour Renderbuffer to the FBO
•Attach a texture to the FBO

Was ich tun will ist genau der 1. Weg - Keine Texture sondern einfach ein buffer.
Jedoch habe ich nirgends ein beispiel dafür gefunden. Und wenn ich dann den Buffer habe weiß ich noch nicht, wei ich drauf zugreife und effektiv die Pixel lese.
Gibts dazu beispiele oder hat es schon mal wer so gemacht?

Texture möchte ich nach, wei vor umgehen, da ich mit allen gängigen hardwaren rechen muss also auch integrierter grafik von einem netbook oder älteren notebook zum beispiel Intel GMA XX.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Dez 08, 2011 09:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
user69 hat geschrieben:
Ich habe mehrfach im Internet folgendes gefunden:

At this point we still don’t have a way of writing colour information to the FBO, so that is what we are going to add now. There are two ways of going about it:
•Attach a colour Renderbuffer to the FBO
•Attach a texture to the FBO

Was ich tun will ist genau der 1. Weg - Keine Texture sondern einfach ein buffer.
Jedoch habe ich nirgends ein beispiel dafür gefunden. Und wenn ich dann den Buffer habe weiß ich noch nicht, wei ich drauf zugreife und effektiv die Pixel lese.
Gibts dazu beispiele oder hat es schon mal wer so gemacht?

Texture möchte ich nach, wei vor umgehen, da ich mit allen gängigen hardwaren rechen muss also auch integrierter grafik von einem netbook oder älteren notebook zum beispiel Intel GMA XX.


vielleicht hättens sich mal den Post von Jens01 auch tatsächlich mal durchlesen sollen. so mit 5 sekunden google usw.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Dez 08, 2011 10:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
user69 hat geschrieben:
Was ich tun will ist genau der 1. Weg - Keine Texture sondern einfach ein buffer.
Jedoch habe ich nirgends ein beispiel dafür gefunden. Und wenn ich dann den Buffer habe weiß ich noch nicht, wei ich drauf zugreife und effektiv die Pixel lese.
Gibts dazu beispiele oder hat es schon mal wer so gemacht?

Texture möchte ich nach, wei vor umgehen, da ich mit allen gängigen hardwaren rechen muss also auch integrierter grafik von einem netbook oder älteren notebook zum beispiel Intel GMA XX.


Sieh dir mal glGenRenderbuffersEXT an, damit erstellt man einen solchen Renderbuffer.

Letztendlich ist dass dann ein Offscreenbuffer, der etwas weniger Speicher als eine Textur verbraucht und mittels glReadPixels normal ausgelesen werden kann wenn er addressiert wird.

Aber es spielt letztendlich kaum eine Rolle ob du für die Farbinformationen ne Textur oder nen Renderbuffer nutzt (bis auf den Speicherunterschied), beides läuft nur auf Hardware die auch FBOs unterstützt.

Wenn du also wirklich auch sehr alte Hardware unterstützen willst solltest du entsprechend auf FBOs verzichten und es direkt über den Framebuffer machen. Ist zwar langsam, aber wenn FBOs nicht unterstützt werden gehts nicht anders.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.016s | 16 Queries | GZIP : On ]