glReadPixels(0, 0, wq , hq , GL_BGRA, GL_UNSIGNED_BYTE, autobild_dreh_ad) benutze ich in meinem Programm von GFA32 um eine bestimmte Fläche zu kopieren und dann auszuwerten. Bei grösseren Flächen wird es langsam. Gibt es einen Trick/Möglichkeit das Bild anders aus dem gl-buffer zu holen?
ich muss zugeben, ich hab keine Ahnung, was GFA32 ist, aber grundsätzlich ist es so, dass alles, wo du dir Informationen aus dem Graphikspeicher (VRAM) holst, ziemlich langsam ist.
Du scheinst noch recht neu zu sein, also wird dir diese Alternative wohl nicht viel bringen [edit] so neu auch wieder nicht. Sorry, hab nur die Anzahl der Beiträge angeschaut... [/edit], aber gegebenenfalls kann es auch möglich sein, die Auswertungen mit Shader gleich auf der Graphikkarte zu machen, und dann nur das Resultat anzufordern (wenn das kleiner ist)
Je nachdem, was du machen willst, kann es auch noch speziellere Alternativen geben, aber im Allgemeinen gibt es glaube ich keine bessere Möglichkeit, oder jedenfalls kenne ich keine.
Ggf. könnte glGetTexImage eine Option sein. Allerdings dürfte das Geschwindigkeitstechnisch im selben Bereich liegen wie glReadPixels. Der Unterschied liegt daran das glReadPixels üblicherweise aus dem aktiven Framebuffer liest, während glGetTexImage eine Textur ausließt.
Was Performance bringen könnte: 1. Wie sharkman schon andeutet kann man Shadern viel anstellen, insbesondere mit Shader-Modell 4.0 und höher. Also gut möglich das du die Auswertung zu einem Großteil auf der Grafikkarte machen kannst. Da kann durchaus ein Faktor 100 an Geschwindigkeit drin sein. 2. Du verwendest GL_BGRA als Farbformat. Der Buffer aus dem du da liest ist aber höchstwahrscheinlich GL_RGBA, daher werden irgendwo die Bytes umgedreht was zusätzlich Zeit kostet. Gut, ist nicht viel, aber etwas. 3. Brauchst du wirklich eine große Fläche. Z.B. beim Color-Picking reicht ja der Pixel unter dem Cursor. 4. Brauchst du wirklich volle 32bit Farben? Reichen vielleicht auch 16bit oder gar nur ein 8bit Farbkanal?
P.S. Ich habe ebenfalls keine Ahnung was GFA32 ist
Ist ein Produkt der deutschen Softwareschmiede. Wurde ca im Jahr 2001 aufgegeben, wie es immer in deutschland ist, kein Durchstehvermögen.
Ist einer der besten und schnellsten deutschen Windowscompiler32(auf Basic) seinerzeit gewesen. Auch heute noch. Liegt an der Geschwindigkeit von C. Erstellt Exedateien und braucht die Runtime.
Auch heute noch kommt auch kein Visualbasiccompiler mit, der ohne Runtime läuft.
Gruss
Zuletzt geändert von funkheld am Di Aug 31, 2010 18:51, insgesamt 1-mal geändert.
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.