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

Aktuelle Zeit: Sa Dez 21, 2024 17:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glCopyTexImage2D / FBO
BeitragVerfasst: So Apr 12, 2015 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Habe ich mit gl*Framebuffer irgendwelche Vorteile gegenüber des anderen Beispieles mit glCopyTexSubImage2D ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D
BeitragVerfasst: Mo Apr 13, 2015 09:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mehrere. Du sparst dir das explizite Kopieren (es wird sofort in die Textur gerendert) und der Inhalt des normalen Fensters bleibt intakt.

Bitte erstell einen neuen Thread für weitere (Rück-)Fragen, der andere war jetzt schon fast einen Monat alt und hatte eine ganz andere Frage.

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D
BeitragVerfasst: Mo Apr 13, 2015 15:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich hab gerade einen grossen Nachteil endeckt, wen die Textur grösser als das Ausgabefenster ist, wird nicht die ganze Textur mit Daten gefüllt.

Zitat:
Bitte erstell einen neuen Thread für weitere (Rück-)Fragen,

Ich wollte nicht für jedes Detail einen neune Thread eröffnen.

Ich werde demnächst den FBO genauer angucken und für weiter Fragen einen neuen Thread eröffnen. :wink:

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D
BeitragVerfasst: Mo Apr 13, 2015 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
mathias hat geschrieben:
Ich hab gerade einen grossen Nachteil endeckt, wen die Textur grösser als das Ausgabefenster ist, wird nicht die ganze Textur mit Daten gefüllt.


Hatte ich dir doch gesagt ;)

btw. ist das übrigens auch einer der Vorteile von FBOs an dieser Stelle. Dort kannst du nämlich beim blitten (wenn du es dann tatsächlich noch kopieren willst) auch gleichzeitig skalieren. Und mehr Code brauchts auch nicht :)

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Mo Apr 13, 2015 19:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Und mehr Code brauchts auch nicht


Viel mehr Code braucht es nicht, es hat auf Anhieb geklappt. :D

Code:
  1.   // ------------ Texturen laden --------------
  2.  
  3.   // --- Textur 0
  4.  
  5.   glGenTextures(1, @textureID0);
  6.   glBindTexture(GL_TEXTURE_2D, textureID0);
  7.  
  8.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexturSize, TexturSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
  9.  
  10.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  11.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  12.  
  13.   // Frame Buffer erzeugen
  14.  
  15.   glGenFramebuffers(1, @FramebufferName);
  16.   glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
  17.  
  18.   glGenRenderbuffers(1, @depthrenderbuffer);
  19.   glBindRenderbuffer(GL_RENDERBUFFER, depthrenderbuffer);
  20.   glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, TexturSize, TexturSize);
  21.   glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthrenderbuffer);
  22.  
  23.   glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureID0, 0);
  24.  
  25.   // --- Textur 1
  26. ....
  27.  
  28.  
  29.  
  30. procedure TForm1.RenderScene;
  31. begin
  32.   // Dreieck auf Textur rendern
  33.  
  34.   glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
  35.  
  36.   glClearColor(1.0, 1.0, 0.0, 1.0);
  37.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  38.   glViewport(0, 0, TexturSize, TexturSize);
  39.  
  40.   with RenderTextur_Shader do begin // Triangle
  41.     Shader.UseProgram;
  42.     glBindVertexArray(uiVAO[0]);
  43.  
  44.     glUniformMatrix4fv(WorldMatrix_id, 1, False, TriangleMatrix.ptr);
  45.     glDrawArrays(GL_TriangleS, 0, Length(Triangle) * 3);
  46.   end;
  47.  
  48.  
  49.   // Würfel rendern
  50.   glBindFramebuffer(GL_FRAMEBUFFER, 0);  

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Di Apr 14, 2015 12:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Mhh ja so gehts natuerlich auch :)

Ich benutze lieber den P-Buffer Ersatz da ich selten eine Textur brauche.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Di Apr 14, 2015 15:36 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Ich zitiere mal aus deinem eigenen Link:
Zitat:
These days, it is best to use GL_EXT_framebuffer_object(Inzwischen auch schon veraltet, siehe nächstes Zitat). This extension is much easier to use compared to p-buffer and best of all, it is cross platform.

Zitat:
This page describes old functionality. You should use the core Framebuffer Object functionality if at all possible.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Di Apr 14, 2015 15:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Ich benutze lieber den P-Buffer Ersatz da ich selten eine Textur brauche.

Für was brauchst du den Framebuffer, wen du ihn nicht für Texturen brauchst ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Di Apr 14, 2015 16:23 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Framebuffer sind in jeder Hinsicht überlegen.
Ich wüsste nichts, wofür man sich P Buffer zurückwünschen könnte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Mi Apr 15, 2015 09:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Aehm.... es ist einfach nur ein Beispiel fuer ein FBO mit Renderbuffer statt Texturen. Was ist denn daran jetzt so grosse Magic? Einfach "EXT" entfernen und schon ists Core bis hoch zu 4.X. :mrgreen:

mathias hat geschrieben:
Zitat:
Ich benutze lieber den P-Buffer Ersatz da ich selten eine Textur brauche.

Für was brauchst du den Framebuffer, wen du ihn nicht für Texturen brauchst ?


Oh das ist einfach, fuer das was sie koennen (z.B. einen rechteckigen Bereich ausgeben), sind Renderbuffer einfach weniger Arbeit. Es gibt noch ein paar technische Hintergruende warum es eventuell besser ist, aber das konnte ich in der Praxis nie feststellen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Mi Apr 15, 2015 13:15 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Ja, stimmt. Ups. Da habe ich wohl nicht richtig gelesen. :wink:
Das mit dem Core Funktionen ohne EXT, gilt natürlich trotzdem.

Ein Framebuffer ohne jegliche Textur scheint mir tatsächlich sehr sinnfrei. Allerdings kommt es durchaus vor, dass man von den ganzen Pixelwerten zum Beispiel nur die Farbe braucht. Depth/Stencil kann man dann in einen Renderbuffer packen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glCopyTexImage2D / FBO
BeitragVerfasst: Mi Apr 15, 2015 14:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Colorbuffer + Blit ist auch haeufiger als man denkt. Bei mobile hast du zum Beispiel eine ganze Reihe von Apps die damit arbeiten, weil es wohl besser fuer den Akku ist... Ich persoehnlich find blit aber einfach nur schicker als ein Quad zu zeichnen :P

_________________
Meine Homepage


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 15 Queries | GZIP : On ]