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

04.08.2009, 22:05

Probleme mit PhysX NxActorDesc (void*)

Guten Abend Community,

beim Programmieren mit NVidia PhysX hab ich ein Problem. Ich übergebe beim Erstellen des physikalischen Objekts dem als "userData" die ID des zugewiesenen Entitys. So weit, so gut. Wenn ich das aber später abfrage, steht nur noch "íííííííííí....." drin. Hier mal der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// [...]

NxActorDesc actorDesc;
actorDesc.userData      = (void*)id.c_str();
App->mScene->createActor(actorDesc);
// abfragen

NxActor **Actors = App->mScene->getActors();
NxActor  *pActor = Actors[App->mScene->getNbActors()-1];
const char* test = (const char*)pActor->userData; // <- Alles OK!


// ___________________________________________________

// eine Funktion später, in der Move-Funktion


NxActor **Actors = App->mScene->getActors();
NxActor  *pActor = Actors[App->mScene->getNbActors()-1];
const char* test = (const char*)pActor->userData; // test == íííííííííííííí


Weiß jemand woran das liegen könnte? Ich hab es auch schonmal mit Multibyte statt Unicode probiert, funktioniert aber auch nicht.

mfg MM

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

04.08.2009, 22:09

Wie siehts aus, wenn du das nicht in einer seperaten Funktion erneut machst, sondern gleich nach dem ersten mal? Stimmt es dann immernoch?
Verbraucht irgendeine Funktion also eine Ressource?

Zuest hätte ich darauf getippt, dass das hier:

C-/C++-Quelltext

1
App->mScene->createActor(actorDesc); 

Dir den Wert überschreibt, aber das scheint anscheinend ja nicht der Fall zu sein.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

04.08.2009, 22:20

Kann es sein, dass id eine lokale variable ist? Diese existiert nach der funktion nicht mehr, also zeigt der Zeiger darauf (oder eben der c_str) ins nirvana.

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

4

04.08.2009, 23:16

id ungültig geworden? (resize, append)
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

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

5

05.08.2009, 10:17

Danke für eure Antworten. Ja, da hab ich wohl nicht aufgepasst^^ id ist wirklich lokal und wird später mit

C-/C++-Quelltext

1
mID = id;

an die Klasse übergeben, aber erst später, und dann hätte ich noch mID benutzen müssen. Aber jezt klappt es.
Vielen Dank für eure Hilfe!

Werbeanzeige