Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.07.2003, 21:48

Bildpuffer in ein BMP rendern

Hallo ihr,

ist es möglich, den Inhalt des Bildpuffers in eine Datei zu rendern?

Ciao
Michael
Denke global, handle lokal !!!

2

16.07.2003, 10:38

Erkläre genauer. Willst du ein Bild laden und im RAM/VideoRAM bearbeiten oder direkt auf die Festplatte speichern. Wenn du letzteres tun willst, kannst du den Inhalt einer Surface speichern.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

16.07.2003, 11:05

Stichwort: D3DXSaveSurfaceToFile (oder so ähnlich)

4

16.07.2003, 16:00

Ich möchte eine Screenshot-Funktion schreiben.

Der Tipp mit D3DXSaveSurfaceToFile hat mir schon sehr weiter geholfen.

Meine Funktion sieht jetzt folgendermaßen aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tbResult ScreenShot(char *File)
{

    LPDIRECT3DSURFACE9 surf;

    if (FAILED(g_pD3DDevice->CreateOffscreenPlainSurface(g_Direct3DParameters.VideoMode.Width, g_Direct3DParameters.VideoMode.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surf, NULL)))
        return TB_ERROR;

    if (FAILED(g_pD3DDevice->GetFrontBufferData(NULL, surf)))
    {
        return TB_ERROR;
    }

    if (FAILED(D3DXSaveSurfaceToFile(File, D3DXIFF_BMP, surf, NULL, NULL))) {
        surf->Release();
        return TB_ERROR;
    }

    surf->Release();

    return TB_OK;
}


Ich hab jetzt aber das Problem, dass die Datei zwar erstellt wird, aber sie nichts enthält. Sie ist schwarz.
Hat jemand einen Tipp, woran es liegen könnte.

Schonmal Danke im vorraus.
Denke global, handle lokal !!!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

16.07.2003, 16:51

Wenn Du mein Buch hast, schau mal, wie ich die Screenshot-Funktion bei Galactica (Kapitel 8) gemacht habe. Ebenfalls mit D3DXSaveSurfaceToFile, aber ohne GetFrontBufferData. Ich habe einfach den Back-Buffer gespeichert.

6

16.07.2003, 20:45

Auf dem Frontbuffer muss ja auch nicht unbedingt was zu sehen sein.
Das was in diesem Frame gerendert wurde befindet sich auf dem Backbuffer.

7

18.07.2003, 08:45

Jo, danke. Hat mir sehr geholfen.
Denke global, handle lokal !!!

Werbeanzeige