Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 22:59

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SDL Screenshots
BeitragVerfasst: So Aug 26, 2007 13:49 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
hi, hab vor ein paar tagen mal versucht die routine aus der wiki einzubauen, aber die funktioniert nicht. Ich kenne mich mit der materie der Screenshotsbastelei auch ueberhaupt nicht aus und habe noch nie selber bilder mit farbkanaelen usw. selber per programm erschaffen lassen usw. Lossy sagt, dass die Routine aus der Wiki ohnehin einige Fehler aufweist, aber bisher hab ich es noch nicht hinbekommen, sie zum laufen zu kriegen. hat von euch vllt einer ne Prozedur, woran man maal sehen kann, wie man nen Screenshot per sdl realisieren kann?

Wikiartikel: http://wiki.delphigl.com/index.php/Scre ... ng_von_SDL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 26, 2007 14:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mit TGA kann ich nicht dienen, aber BMP ist simpel:
Die zum Start initialisieren:
Code:
  1.  
  2.   BMPSurface := SDL_CreateRGBSurface(
  3.       SDL_HWSURFACE,
  4.       ScreenWidth,
  5.       ScreenHeight,
  6.       24,
  7.       $000000FF,
  8.       $0000FF00,
  9.       $00FF0000,
  10.       $00000000
  11.     );
  12.  


Beim screenshotten:
Code:
  1.  
  2.     glReadPixels(0, ScreenHeight, ScreenWidth, ScreenHeight, GL_RGB, GL_UNSIGNED_BYTE, BMPSurface^.pixels);
  3.     SDL_SaveBMP(BMPSurface, PChar(ScreenShotFilename));
  4.  


Und freigeben
Code:
  1.  
  2.   SDL_FreeSurface(BMPSurface);
  3.  


Mit TGA kann ich leider nicht dienen, aber für den Anfang sollte es reichen, oder?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 26, 2007 15:02 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
jo im grunde wuerde bmp auch erstmal reichen, aber wenn ich den code so uebernehme ist das resultierende bild 1 pixel groß^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 26, 2007 16:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
In dem Artikel steht, dass es auch mit dem Hauptsurface geht. Und Shaddow hat es genau darüber versucht. Wobei wenn ich jetzt so drüber nachdenke wüsste ich nicht ob das überhaupt mit dem Surface gehen würde. Weil dann müsste SDL selbst die Daten zurücklesen. Zum Glück steht in dem Artikel auch wie das angestellt wurde. Denn so ohne Weiteres ging es bei mir gerade nämlich nicht.

Aber du kannst natürlich auch das mit glReadPixels gelesene Surface an die Methode übergeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 26, 2007 16:26 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
ich hab jetzt auch diese methode mal probiert: http://wiki.delphigl.com/index.php/Scre ... TGA_Format

Der Screenshot wird fehlerfrei umgesetzt nur ist letzten endes nur das Koordinatensystem zu sehen. Weder meine FPSAnzeige noch meine Partikeleffekte. Ich gehe mal ganz stark davon aus, dass irgendwie die Texturen nicht mitgespeichert werden, weil alle Sachen, die nicht zu sehen sind, texturiert waren

Edit: eine weitere Möglichkeit wäre ja, dass es an den Alphawerten liegt, da alle Sachen die fehlen nicht nur Texturiert waren, sondern auch alphageblendet. Also hab ich mal mit meinem wenigen Wissen den Code noch um den Alphakanal erweitert. Der Screenshot wird fehlerfrei gemacht nur....
Kommt da ein derber grafikfehler

Edit2: Gut nachdem ich nun die BPP auf 32 von 24 hochgesetzt habe, verschwinden die Grafikfehler und die GL_BGRA-Grafik sieht genauso aus, wie die GL_BGR... eigenartig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 27, 2007 11:24 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
also ich hab evtl den titel falsch gewählt, denn im grunde muss dieser screenshot nicht zwingend mit sdl sondern kann auch mit ogl gemacht werden, ich kann und will nur keine windowseigenen funktionen nutzen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 27, 2007 13:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
hmm, also, die BPP der BMPSurface würde ich auf 24 lassen, sonst kommt Windoof damit nicht klar.

Aber: Bist du sicher, dass du den Screenshot an der richtigen Stelle abgreifst? Er kann ja nur die sachen auslesen, die schon gezeichnet sind, also am besten immer direkt vor SDL_GL_SwapBuffers.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 27, 2007 17:04 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Arg sowas dummes ^^
Ich hab die Screenshotprozedur per Eventmanager an ein KeyDownevent gekoppelt und mein eventmanager wird bei jedem Rendervorgang immer als aller erstes (allerdings nach dem zeichnen des Koordinatensystems) ausgeführt. Habs jetz etwas umgebaut und violá:

Bild

(Das Bild zeigt mal meine Partikelengine an ein Bass.dll-Modul gekoppelt, wo also die Partikeleffekte von Frequenz und Amplitude der Soundtracks abhaengen)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]