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

idontknow

unregistriert

1

25.07.2010, 18:07

IDirect3DDevice9::SetStreamSource(...) crashed mein programm!

moin!

Hab ja das laden der Textur gefixt und wollte mein Testprogramm weiter fortsetzen-...... aaaaaaaaaaaber folgender Aufruf in meiner Rendermethode crashed mein Programm mit einer

Quellcode

1
Unhandled exception at 0x6c43dc08 in Shooter.exe: 0xC0000005: Access violation reading location 0xcdcdcde1.
Fehlermeldung.

C-/C++-Quelltext

1
_Texture->getDevice()->SetStreamSource(0, _Buffer, 0, sizeof(SpriteVertex));


Das "tolle" ist, das z.b. das setzen des Vertexformates kein Problem ist... . Der vertexbuffer ist ebenfalls gültig....

Help me (man merkts kaum ist dot weg nerv ich im Forum :P).

2

25.07.2010, 18:32

Schonmal mit dem Debugger durchgegangen ? Igendein Zeiger wird nunmal nicht stimmen.

idontknow

unregistriert

3

25.07.2010, 18:46

C-/C++-Quelltext

1
2
3
4
5
6
void Sprite::render()
{
    _Texture->getDevice()->SetStreamSource(0, _Buffer, 0, sizeof(SpriteVertex)); // <- Zeile allein ausgeführt -> Crash
    _Texture->getDevice()->SetFVF(SpriteVertex::_FVF); // Zeile allein ausgeführt *HAPPY*
       // Ergo: _Texture, sowie getDevice() liefern schonmal nen gültigen Pointer!
}


_Buffer ist KEIN Nullpointer und beim erstellen habe ich auch keine Fehlermeldung bekommen.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

26.07.2010, 07:51

_Buffer ist KEIN Nullpointer [...]
Richtig. Laut Fehlermeldung ist er eher 0xcdcdcde1

idontknow

unregistriert

5

26.07.2010, 12:33

Sollte mir das was sagen?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

26.07.2010, 13:11

Ja, nämlich das _Buffer ein ungültiger Zeiger ist...

Was sagt denn der Debugger ?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

26.07.2010, 14:17

Richtig. Laut Fehlermeldung ist er eher 0xcdcdcde1
Er wird wohl eher 0xcdcdcdcd (uninitialized heap memory im debug mode) sein und und die Lese-Routine wird auf den Offset 4 zugreifen (also vermutlich einer Member-Variablen entsprichen), was damit ein Auslesen der Speicherstelle 0xcdcdcde1 bewirkt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

8

26.07.2010, 14:23

und die Lese-Routine wird auf den Offset 4 zugreifen

es könnte auch die zweite funktion in der (ungültigen) vtbl sein, AddRef() wäre eine möglichkeit.

kann sein, dass das erstelle fehlschlägt, und der pointer deswegen nicht initialisiert wird (!= 0). überprüfe mal den rückgabewert.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

idontknow

unregistriert

9

26.07.2010, 17:06

C-/C++-Quelltext

1
2
3
4
5
if(FAILED(_Buffer->Lock(0, sizeof(SpriteVertex) * 4, &pBuffer, NULL)))
    {
        std::clog << "Failed to Lock Vertexbuffer (Sprite::_Buffer)!" << std::endl;
        return;
    }


Lande wenn ich nen Breakpoint setze nie im in den {}. Ergo sollte es funktionieren! Vergessen es aufzurufen is auch net, habs im Ctor :).

edit: Ich hab vergessen den Vertexbuffer zu erstellen o______________________________________O.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »idontknow« (26.07.2010, 19:19)


Werbeanzeige