AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PBO asynchron glreadPixel

Ein Thema von EWeiss · begonnen am 18. Jan 2014
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

PBO asynchron glreadPixel

  Alt 18. Jan 2014, 13:19
Ich erstelle beim initialisieren von OpenGL zwei PBO (Pixel Buffer Objects)um später beim Rendern glReadpixel asynchron verwenden zu können.
Eine PBO zum lesen der Pixel aus dem Framebuffer von der GPU die andere zur Bearbeitung der Pixel über die CPU.

Wenn ich das nicht mache geht meine Framerate runter bis auf 9 Frames in der Sekunde.

// InitPBO
Delphi-Quellcode:
  glGenBuffersARB(2, @m_pPBO);
  glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_pPBO[0]);
  glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT,
                  StretchWidth * StretchHeight * 4,
                  nil,
                  GL_STREAM_READ);

  glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_pPBO[1]);
  glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT,
                  StretchWidth * StretchHeight * 4,
                  nil,
                  GL_STREAM_READ);

  glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0);
Damit habe ich zwei PBO's initialisiert.

und verwende eine davon auf diese weise.

Delphi-Quellcode:
    glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_pPBO[0]);
    glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
    glReadPixels(0, 0, width, Height, GL_BGRA, GL_UNSIGNED_BYTE, nil);
    RGBBits[0] := glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY_ARB);
    //.......
    // Pixel verarbeiten..
    //.......
    // Buffer freigeben.
    glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB);
    glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
Das bringt mir schon mal 20 Frames mehr.
Allerdings verwende ich nur ein PBO.

Ich verstehe im Moment die Technik nicht die dahinter steckt zwei PBO's auf ein und die
gleiche Texture anzuwenden so das die Daten asynchron gelesen (verarbeitet) werden.

Kann jemand helfen?


gruss

Geändert von EWeiss (19. Jan 2014 um 02:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:56 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