Aktuelle Zeit: 23.02.2019 15:10

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 31 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 29.06.2018 21:52 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Rein von der Logik her würde ich sagen, dass auch deine Methode bei 4K in der FPS Rate sinken muss, da 4x so viele Daten. Wüsste nicht wieso das dort anders sein sollte. Hieße dann statt 20-30 FPS nur noch um die 5-8 FPS.

Alternativ ginge sicherlich noch die NVIDIA Capture API sowie das Pendant von AMD dazu. Müsste ich mir aber erst angucken ob ich die überhaupt in so einer nicht 3D Anwendung nutzen könnte, aber das würde ich eher später mal machen als Alternative Auswahl zur Desktop Duplication API.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 29.06.2018 22:58 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Hoto hat geschrieben:
Rein von der Logik her würde ich sagen, dass auch deine Methode bei 4K in der FPS Rate sinken muss, da 4x so viele Daten. Wüsste nicht wieso das dort anders sein sollte. Hieße dann statt 20-30 FPS nur noch um die 5-8 FPS.

Alternativ ginge sicherlich noch die NVIDIA Capture API sowie das Pendant von AMD dazu. Müsste ich mir aber erst angucken ob ich die überhaupt in so einer nicht 3D Anwendung nutzen könnte, aber das würde ich eher später mal machen als Alternative Auswahl zur Desktop Duplication API.


Ich bin grad dabei ein Capture-Modul in DirectX zu schreiben :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 04:32 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Also mit der Desktop Duplication API? Für PB? Wenn ja hätte ich da natürlich Interesse daran. ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 08:56 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Hoto hat geschrieben:
Also mit der Desktop Duplication API? Für PB? Wenn ja hätte ich da natürlich Interesse daran. ^^


Vorerst nur mit DirectX9 :)
Damit bekomme ich relativ konstante ~ 30 FPS (gerendert!).
Mit Threads sollte das natürlich nochmal schneller sein.

Um die Duplication API auszuprobieren brauche ich mehr Zeit.

Auch wenn Microsoft sagt GetFrontBufferData() sei langsam - scheint es immer noch besser als GDI zu sein.

So sieht der Code zum Capturen aus, mit DirectX9 ist das noch recht simple:
Code:
   Procedure.i Frame()
    If *Device\GetFrontBufferData(#Null,Target\Surface) = #D3D_OK
      If Target\Surface\LockRect(@Target\Locked,#Null,#D3DLOCK_NOSYSLOCK|#D3DLOCK_READONLY|#D3DLOCK_DONOTWAIT) = #D3D_OK
        Target\Surface\UnlockRect()
        ProcedureReturn Target\Locked\pBits
      EndIf
    EndIf
  EndProcedure


DirectDraw (DirectX7) wäre evtl. auch noch eine Möglichkeit.
Könnte sogar noch schneller sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 10:49 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Ah, ok, ist für meine Zwecke aber immer noch zu langsam. Funktioniert das so überhaupt mit dem normalen Desktop?

Es hat sich vor Jahren ja schon mal Jemand dran versucht, aber ob er das zum laufen bekommen hat? Sind auch Funktionen, die ich noch nie benutzt hab, weiß nicht mal wie man das zum laufen kriegen könnte.

https://www.purebasic.fr/english/viewto ... 13&t=59425


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 11:31 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Hoto hat geschrieben:
Ah, ok, ist für meine Zwecke aber immer noch zu langsam. Funktioniert das so überhaupt mit dem normalen Desktop?

Es hat sich vor Jahren ja schon mal Jemand dran versucht, aber ob er das zum laufen bekommen hat? Sind auch Funktionen, die ich noch nie benutzt hab, weiß nicht mal wie man das zum laufen kriegen könnte.

https://www.purebasic.fr/english/viewto ... 13&t=59425


Ja es funktioniert mit dem normalen Desktop.

Leider ist es ohne Treiber fast unmöglich den aktuellen Inhalt des V-RAMs zügig auszulesen.
Viel einfacher und schneller ist es den BackBuffer abzugreifen weshalb viele Capture-Programme bei
Spielen (OpenGL/DX-Anwendungen) auf Hooks zurückgreifen und sonst einfach nur den Desktop blitten.

Microsoft versucht mit der Desktop Duplication API eine Schnittstelle bereitzustellen.
Im Prinzip fällt hier nur das Hooking weg aber ich bezweifle das es schneller ist.

Besser geht es wahrscheinlich nur mit Treibern & Software die speziell dafür gemacht ist wie z.B:
NVIDIAs Capture SDK https://developer.nvidia.com/capture-sdk.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 12:08 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Hoto hat geschrieben:
Es hat sich vor Jahren ja schon mal Jemand dran versucht, aber ob er das zum laufen bekommen hat? Sind auch Funktionen, die ich noch nie benutzt hab, weiß nicht mal wie man das zum laufen kriegen könnte.

https://www.purebasic.fr/english/viewto ... 13&t=59425


Weil PB lieber Zeit darauf verschwendet eine unpopuläre 3D Engine zu pflegen anstelle
PB-Nutzern wichtige OS-APIs/ Interfaces/ Structures bereitzustellen.
Momentan ist vieles nur Häppchenweise (immerhin) vorhanden.
Das ist einer der wenigen Kritikpunkte die ich habe.
Auch z.B. verwendet PureBasic SDL/ GTK aber verwährt den direkten Zugriff!?.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 12:16 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Naja, will jetzt keine Grundsatz Diskussion über PB starten, aber PB ist halt nicht nur Windows. Es ist ja gut, dass man vieles überhaupt ans laufen kriegt, ist ja auch nicht selbstverständlich. Bringt aber halt nur meist etwas, wenn man mehr als nur PureBasic kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 13:34 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Ich hab mal eine DLL zum rumprobieren erstellt.

Bsp.:
Code:

;dxsc v.alpha by Mijikai

Import "dxsc64.lib"
  dxscInit.i(hWnd.i)    ;init directx 9 & screen capture
  dxscWidth.i()         ;get capture width (screen)
  dxscHeight.i()        ;get capture height (screen)
  dxscFrame.i()         ;capture frame to memory (returns abgr buffer)
  dxscPixel.i(X.i,Y.i)  ;get the xy pixel color within a frame (returns rgb)
  dxscSaveBMP.i(File.s) ;make a screenshot and save it as bmp
  dxscSaveJPG.i(File.s) ;make a screenshot and save it as jpg
  dxscSavePNG.i(File.s) ;make a screenshot and save it as png
  dxscRelease.i()       ;release all resources
  dxscVersion.i()       ;version (x.x.x.x)
EndImport

Global Width.i
Global Height.i
Global *Buffer
Global PosX.i
Global PosY.i
Global Event.i

If InitSprite()
  If OpenWindow(0,#Null,#Null,400,400,#Null$,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(0),#Null,#Null,400,400)
      If dxscInit(WindowID(0))
        Width = dxscWidth()
        Height = dxscHeight()
        Repeat
          Repeat
            Event = WindowEvent()
            If Event = #PB_Event_CloseWindow
              Break 2
            EndIf
          Until Event = #Null
          ClearScreen(0)
          *Buffer = dxscFrame()
          If *Buffer
            If StartDrawing(ScreenOutput())
              For PosX = 0 To 399
                For PosY = 0 To 399
                  Plot(PosX,PosY,dxscPixel(PosX,PosY));slow drawing!
                Next
              Next
              StopDrawing()
            EndIf
          EndIf
          FlipBuffers()
        ForEver
        dxscRelease()
      EndIf
    EndIf
  EndIf
EndIf

Die Library ist hier zu finden: https://www.dropbox.com/s/zcb6vdnxnkuheh1/PB_5.62_dxsc_DLL.zip?dl=0

Edit: Jetzt gibt es eine x86 & x64 Version!


Zuletzt geändert von Mijikai am 30.06.2018 19:34, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Erweiterte Ambilight Windows Software für Adalight (Ardu
BeitragVerfasst: 30.06.2018 16:08 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Solltest du vielleicht in einen entsprechenden eigenen Thread schreiben, hier geht das doch etwas unter.


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

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