Aktuelle Zeit: 19.07.2018 08:05

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 26.06.2018 16:24 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Eine Idee hätte ich noch, aber ob das funktioniert?

Statt das die DLL das Bild übergibt, könnte sie ja auch nur die Adresse des Speicherbereichs der Textur im Grafikspeicher an PB übergeben und dann greift PB per DX11 Subsystem darauf zu, wodurch PB selbst die Texture im Grafikspeicher verkleinern könnte. Aber ob so etwas überhaupt möglich ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 29.06.2018 02:42 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Bin ich doch noch über eine Idee gestolpert, die ganz gut aussieht (zusammen kopiert, rein zum Funktionsverständnis).

Code:
*buf2 = AllocateMemory(Width*Height*4)
CreateImage(0,Width,Height,32)
StartDrawing(ImageOutput(0))
  *buf2 = DrawingBuffer()
  Get_Frame_Bytes(*dxgi_manager, @buf_size, @*buf)
  CopyMemory(*buf,*buf2,buf_size)
StopDrawing()

Hatte erst versucht Get_Frame_Bytes() direkt in den DrawingBuffer() schreiben zu lassen, aber das schein wohl nicht zu gehen, kriege ich bloß ein schwarzes Bild raus. Oder geht das doch irgendwie?

So klappt es aber, auch wenn das Bild auf dem Kopf steht (vertikal gespiegelt), was aber für die Weiterverarbeitung völlig egal ist, zumindest in meinem Fall, da das Bild ja nicht zum anzeigen gedacht ist. Ich hatte eigentlich mit falschen Farben gerechnet, weil ich BGRA Farbreihenfolge, aber PB arbeitet wohl intern mit der gleichen Reihenfolge.

Dennoch wüsste ich gerne wie viel ms man sparen könnte, könnte ich die Daten schon im Grafikspeicher reduzieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 30.06.2018 14:56 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Vielleicht hilfreich :)

Farbwerte auslesen (schneller als einzelne PeekA()):
Code:
Global *Pixel.Long
Global Pitch.i

Pitch = Width * 4
*Pixel = *Buffer + (Y * Pitch) + X * 4
Plot(X,Y,*Pixel\l)

Farbwerte Auslesen & Auflösung reduzieren:
Code:
;StepX & Y -> Faktor Skalierung
For X = 0 to Width step StepX
  For Y = 0 to Width step StepY
    Plot(X / StepX,Y / StepY)
  Next
Next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 30.06.2018 16:53 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Zweites hatte ich schon, aber Plot in einer For Next Schleife ist einfach viel zu langsam. Da ist die letzte Lösung oben aktuell doch die Beste, also einfach den Empfangs Buffer direkt in den Image Buffer kopieren, direkt die Daten in den Image Buffer schreiben zu lassen scheint ja leider nicht zu gehen (würde noch mal 2-3ms sparen) oder ich hab da ein Fehler übersehen.

Wenn ich dann die Farben von dem bereits verkleinerten Bild brauche, werd ich wohl wieder direkt den Image Buffer nehmen und den auslesen. Da werd ich dann aber eh die verschiedensten Möglichkeiten durch gehen und schauen was am schnellsten geht.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

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


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye