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.