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

11

10.01.2011, 00:40

Nein, bei GooseGoogs wird bevor aus dem Levelbild (dem Schwarzweißen in dem die Kollisionsdaten stehen!) eine "Collisionmap" generiert anhand von der auf Kollision geprüft wird. Passiert zwar auch zur Laufzeit ist aber praktisch ein einmaliger Aufruf und da das ganze nichtmal während dem wirklichen Spielen pasiert duchaus verkraftbar!


richtig.

D3D bietet dir die möglichkeit Surfaces anzulegen (mit "CreateOffscreenPlainSurface()"), in das du dann mit "D3DXLoadSurfaceFromFile" eine Bitmap, etc laden kannst.
Dann erstellst du ein D3DLOCKED_RECT, und übergibst dessen Pointer mit der "LockedRect()" Funktion des Surfaces dem Surface. Nun findest du im LockedRect.pBits einen pointer zu den Pixeln des Surfaces, kopiere den Pointer raus und wandele ihn in einen D3DCOLOR pointer um, schon hasst du zugang zum pixelarray, dessen D3DCOLOR's du frei auslesen/ändern kannst. Danach rufst du surface.UnlockedRect() auf.
Mach das mit dem locken und unlocken nicht zur laufzeit, kostet extrem viel performance. das D3DCOLOR array kannst du aber problemlos zur laufzeit auslesen, nur änderungen sind ohne lock nicht möglich.