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

02.01.2006, 17:14

problem mit GetBackBuffer & LockRect

Hallo erst mal ein frohes neues jahr.

so ich hab seit vergangenem jahr ein problem zudem ich keine lösung finde. Ich versuche, gänzlich ohne erfolg, eine Textur zu sperren.

ich hab jetzt schon alles zu dem thema in david's buch und auch hier alle threads zu diesem thema gelesen. nun bin ich zumindest schonmal so weit das ich weis das sich nicht jede textur sperren läst, solange man es mit der textur versucht.

Ich probiere es momentan über den backupbuffer, leider mit dem gleichen ergebniss das die anwendung crashed.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    IDirect3DDevice9 *dev = NULL;
    if(pTexture != NULL && ((IDirect3DTexture9*)(pTexture))->GetDevice(&dev) == D3D_OK)
    {

            D3DSURFACE_DESC     pDesc;
            IDirect3DSurface9   *pSurface;
            D3DLOCKED_RECT      pLockRect;
            HDC phdc;
            
            if(dev->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pSurface)==D3D_OK)
            {

                    add_log("0x%x",pSurface);
                    pSurface->LockRect(&pLockRect,0,NULL);
                    pSurface->UnlockRect();
            }
    }


was mach ich falsch wo liegt der fehler kann mir da bitte jemand helfen?
Ein blutiger Direct X Anfänger

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

02.01.2006, 17:22

Re: problem mit GetBackBuffer & LockRect

Zitat von »"LowFly"«

C-/C++-Quelltext

1
((IDirect3DTexture9*)(pTexture))

Wozu dieser Cast? Von welchem Typ ist pTexture?

3

02.01.2006, 18:46

vom typ IDirect3DBaseTexture9
Ein blutiger Direct X Anfänger

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

02.01.2006, 22:26

Und wo crasht es genau?
Außerdem beachten:

Zitat von »"DirectX-SDK-Dokumentation"«

A multisample back buffer cannot be locked.

5

03.01.2006, 00:44

bei
pSurface->LockRect(&pLockRect,0,NULL);
bzw auch wenn ich es über
pTextur->LockRect(....); mache
aber textur weis ich ja jetzt schon ist nicht jede Lockabel

[EDIT]
wo steht das in der MSDN?
ich hab jetzt extra nochmal geschaut aber ich find da nix unter GetBackBuffer
Ein blutiger Direct X Anfänger

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

6

03.01.2006, 01:23

Zitat von »"LowFly"«


wo steht das in der MSDN?
ich hab jetzt extra nochmal geschaut aber ich find da nix unter GetBackBuffer


Das steht in der DX-SDK-Doku (IDirect3DSruface9::LockRect)

mfg Philipp

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

7

03.01.2006, 12:45

Hast du denn beim Erstellen des Devices auch das Flag D3DPRESENTFLAG_LOCKABLE_BACKBUFFER in der PresentParameters-Struktur gesetzt?
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

8

05.01.2006, 14:19

erst mal danke für eure hilfe,
ich bin jetzt ein stück weiter. ich hab mein OS & DX neu installiert und jetzt stürzt zumindest die anwendung bei
pSurface->LockRect(&pLockRect,0,NULL);
nicht mehr ab.

aber pLockRect.pBits o. pLockRect.Pitch geben mir immer den wert null zurück. pSurface ist aber mit einem wert belegt.

Zitat


Hast du denn beim Erstellen des Devices auch das Flag D3DPRESENTFLAG_LOCKABLE_BACKBUFFER in der PresentParameters-Struktur gesetzt?

ähm :o nee
wie du oben im code erkennen kanst erstell ich das Device aus der textur aber ich hab mir schon sowas in der richtung gedacht das das nicht das richtige device ist über das ich auf den backupbuffer zugreifen will.
von der PresentParameters-Struktur höre ich jetzt zum ersten mal.
Ein blutiger Direct X Anfänger

Werbeanzeige