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

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

11

11.05.2004, 10:56

Zitat


Ich wette, das wird nicht helfen: bestimmt sind alle Parameter und Rückgabewerte OK, memcpy ist natürlich OK, nur schätze ich mal, dass der Zeiger des gesperrten Buffers auf einen zu kleinen Bereich zeigt (ich sagte ja, genau das passierte bei mir auch, und ich weiß nich wieso...)


Aber warum? Eine Vermutung ist, dass zwar CreateVertexBuffer einen VB der richtigen Größe erzeugt, aber irgendweshalb Lock nicht richtig arbeitet. In diesem Fall wäre zu hoffen, dass Lock einen entsprechenden Rückgabewert liefert.

12

11.05.2004, 14:29

Quellcode

1
memcpy(pVertices, m_BodenVertices, sizeof(TexturedVertex)*m_Size*6);
Ist m_BodenVertices ein Array? Frage nur weil nichts darauf schließen läst, aber kein Adressoperator angegeben wurde.

Also ich hab drei vorschläge:
1) Lösch mal deine Debug oder Release Ordner. Es gibt schon mal das ein oder andere Problem, wenn der Code einmal falsch compiliert wurde bei erneutem aber nicht neu compiliert wird, trotz Änderungen. Nach Löschung alles neu Compilieren.

2) Der obige Code ist korrekt. memcpy ist tausendfach geprüft und damit absolut fehlerfrei. Nun ist ja auch nicht viel Code ;) . Ich glaube auch nicht das Lock nur einen Teil des VB liefert. Das sind immer solche Fehler, wenn ein Programm an einer stelle abstürzt an der einfach alles richtig ist. Dann hab ich immer den verdacht das davor irgendwo was nicht stimmt. Prüfe alle Schleifen ab, ob du irgendwo über den Speicherbereich hinaus schreibst. Prüfe ob du in den Inhalt eines Pointers schreibst, dieser aber gar keinen gültigen Speicherbereich hat.

3) Für mal DXDiag aus und prüfe ob hier ein fehler vorliegt. Schalte mal den Debug Modus ein. Dann wird genauer geprüft. Eventl. bekommst du dann doch eine Fehlermeldung bei der Lock Methode oder schon beim erstellen des VB.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D