AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

Ein Thema von dizzy · begonnen am 25. Apr 2005 · letzter Beitrag vom 25. Apr 2005
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 16:52
Mahlzeit miteinander.

Das eine oder andere Mal kamen hier schon Fragen auf, wie man sowohl lesend, als auch schreibend Zugriff auf laufende Direct3D/OGL-Screens bekommt. Mich selbst kitzelt es ja nun auch schon länger, dieses mal zu versuchen. Dass das nicht ganz ohne ist weiss ich (habs ja auch schon öfter mal geschrieben ).
Tja, und nun ist die Zeit gekommen: Ich bin heiss

Ich habe mich mal ein wenig auf die Suche gemacht um zu erfahren wie man das ganze angehen könnte, wobei ich meinen Schwerpunkt zunächst auf DirectX legen werde, da man es auf Win-Plattformen doch etwas häufiger (bei Games o.ä.) antrifft.

Folgendes habe ich herausbekommen:
  • API-Hooking ist das generelle Zauberwort
    • Die MadCodeHook ist dabei mein aller bester Freund
  • Es wären die Funktionen zu hooken, die den Backbuffer flippen
  • Ich brauche wohl den DC
  • Alles ist relativ Neuland für mich
Wie man grundsätzlich mit MadCodeHook einen globalen Hook erstellt, und selbigen auch injizieren kann, ist ja auf den Seiten von Madshi recht gut dokumentiert, und in der DP finden sich auch ein paar wenige Schnipsel. Das sollte an Rahmen denke ich genügen.

Mein eigentliches Problem fängt dort an, wo es wirklich spannend wird:
Welche Funktionen aus welchen DLLs und vor allem mit welchen Parametern sind meine Ziele? Was bekomme ich dort dann heraus?


Zielsetzung ist ein Tool dass dem Screenshot/Screenvideo-Tool Fraps ähneln soll. Ich brauche also nur Zugriff auf den Front- oder Backbuffer, so dass ich ein Bitmap befüllen kann. Sekundäres Ziel wäre eine Ausgabe in das Direct3D-Programm, so dass man z.B. Auskunft über diverse Dinge geben kann, wie restlicher Plattenplatz, Framerate (evtl.), ob Aufnahme aktiv oder nicht, etc.pp.
(Eventuell ließe sich ja sogar ein kleiner MP3-Player als Feature einbauen der direkt aus dem Spiel heraus bedient werden kann *träum*)


Bei meinen Suchen bin ich auf dieses Projekt gestoßen, und habe mir auch mal sie Sourcen angesehen, in der Hoffnung dort Anregung zu erhalten. Da meine C-Festigkeit leider gegen NULL () geht verstehe ich den Code faktisch garnicht. Ich habe nichtmal herausgefunden welche Funktionen welcher DLLs gehookt werden


Ich bin über wirklich jede Form von Hilfe dankbar, da sich zu dem Thema nicht allzuviel verständliches Material finden lässt.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 17:51
beie opengl könnte ich dir das in ein paar minuten machen.

bei DirectX werden die einzelnen funktionen nicht exportiert, sondern man bekommt bei der erstellung nur einen pointer auf das "directX" projekt zurück, da habe ich leider icht so viel ahnung von

aber unter opengl ist das alles recht einfach, man muss nur wglSwapBuffers hooken dnan kann man die framerate berechnen
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 17:56
Erhält man bei der OGL-Lösung auch Zugriff auf die Pixeldaten? Dann wäre das ja schon mal ein kleiner Anfang

Wenn du zu dem Problem mit DX Links o.ä. hättest... ich lese alles, und das mit Wonne

Danke schonmal!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#4

Re: Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 18:05
wglSwapBuffers bei jedem frame aufgerufen
Pixeldaten bekommt man da nicht kann man aber über glReadPixels jederzeit auslesen

ne eiegen Dll injection + Hook unit hätte ich auch da, eigentlich ist das ein kinderspiel in opengl da ich das schon seit mehr als 2 jahren mache
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#5

Re: Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 19:39
ich verweise mal auf den thread, da nicht immer doppelt in beide threads gepostet werden muss

http://www.delphipraxis.net/internal...ct.php?t=52353
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Direct3D/OGL hooken bzw. Fraps-Nachbau - wie?

  Alt 25. Apr 2005, 21:07
Zitat von brechi:
ich verweise mal auf den thread, da nicht immer doppelt in beide threads gepostet werden muss
Den hatte ich anfangs erst garnicht als SO ähnlich angesehen... *hirnknotenlös*. Ganz dicken Dank schon mal! Ich werd mir das morgen mal genauer zu Gemüte führen.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  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 00:12 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