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

Anonymous

unregistriert

1

18.08.2003, 15:27

speicher in surface - ddraw

ich habe eine bmp ins speicher geladen... mein problem ist jetzt diese auf die backsurface zu malen...

als rückgabewert der funktion habe ich dies

Quellcode

1
2
3
    // Zeiger auf die Daten liefern 
    return Daten; 
}



ich weiss aber nicht wie ich diese daten auswerten soll bzw. wie die funktion aussehen muss um die daten zu zeichnen..

sorry bin newbie

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

2

18.08.2003, 19:15

in den Backbuffer schreiben

Zeichnen kannst Du, in dem der Videospeicher zum Schreiben gesperrt wird.
LPDIRECTDRAWSURFACE9 psf;
// Erstellen mit CreateSurface
...
psf->Lock(..., &SurfaceDesc, ..., ...)

SurfaceDesc hat eine Membervariable, die den Zeiger auf das erste Byte besitzt.
Ab da schreibst Du los. Beachte, dass, wenn Deine Bildschirmauflösung 800x600 beträgt, nach 800 Bytes die zweite Zeile beginnt.

Danach psf->Unlock()

Suche mal nach diesen Begriffen im DX-SDK. Da wirst Du fündig.

Anonymous

unregistriert

3

19.08.2003, 22:46

hm

hi also ich benutze die zip funktion die auf dieser seite als tut bereit steht..
mein problem ist das ich mit der zip funktion bmp's laden will (ddraw; dx7)

wenn ich die bmp im speicher habe wie im tut muss ich für das bmp noch eine surface erstellen und danach auf die backsurface blitten oder kann ich direkt vom speicher auf die backsurface blitten?

:?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

19.08.2003, 22:55

Dafür brauchst Du schon eine eigene Surface. Ist ja auch sinnvoll.
Also Surface erstellen (Bitmap-Dimensionen musst Du vorher ermitteln), sperren und dann die Daten reinkopieren. Und das Entsperren nicht vergessen.

Anonymous

unregistriert

5

19.08.2003, 23:03

hm

danke david,

mein problem ist das ich nicht weiss wie ich die pixel aus den daten lesen soll...

pixel malen ist kein problem aber lesen eher :/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

19.08.2003, 23:05

Lies Dir mal ein paar Infos über den Aufbau des BMP-Formats durch, oder was Du halt verwenden willst.
Ich habe aber noch eine andere Lösung für Dich. Wenn es für Dich kein Problem ist, aus einer richtigen Datei zu laden, z.B. "Test.bmp", dann kannst Du auch den Speicherbereich, den Du von der Zip-Ladefunktion kriegst, in eine temporäre Datei schreiben, z.B. "Temp.bmp" und dann von dort aus das Bild laden.

Anonymous

unregistriert

7

19.08.2003, 23:25

hm :/

ich steige langsam mal auf dx9 um irgendwie kotzt mich ddraw an :D

kann keine avis abspielen etc.. :(

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

19.08.2003, 23:27

Das kann Direct3D auch nicht :)
AVIs kannst Du sehr wohl mit DirectDraw anzeigen. Mit den Windows-AVI-Funktionen kannst Du AVIs Frame für Frame dekodieren und Du kannst mit den Bilddaten machen was Du willst, z.B. in den Back-Buffer blitten.

Anonymous

unregistriert

9

19.08.2003, 23:46

:)

david ich habe es immer wieder versucht :D ich gebs auf und steig glaub ich auf dx9 um du darfst mir aber gerne helfen und mir ein source geben wo das avi abspielen in dx7 klappt :) ich kaufe auchd ein buch :huhu:

achwas ich laufs auch so ;)

Werbeanzeige