Problem mit Raycaster (Boden)

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

shootermaker

Betreff: Problem mit Raycaster (Boden)

BeitragSa, Jul 09, 2011 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich schreibe gerade einen Raycaster.
Wände mit Texturen sind schon enthalten und funktionieren perfekt.
Bei der Darstellung des Bodens hab ich leider ein Problem und brauch eure Hilfe.

Ich benutze den Befehl "DrawSubImageRect" um die Texturen darzustellen.
Beim Boden klappt das allerdings nicht.
 

shootermaker

BeitragDo, Jul 14, 2011 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab den Sourcecode mal Hochgeladen vielleicht kann sie sich mal jemand ansehen.
Bin echt schon am verzweifeln. Sad

Ich bekomm es einfach nicht hin das der Boden korrekt mit dem Befehl
"DrawSubImageRect" dargestellt wird.

https://www.blitzforum.de/upload/file.php?id=10813

Noobody

BeitragDo, Jul 14, 2011 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Berechnungen waren alle schon im Code drin - du hast sie nur entweder auskommentiert oder nicht richtig angewendet Razz

Hier die funktionierende Zeichenroutine: BlitzMax: [AUSKLAPPEN]
SetColor(255, 255, 255)
For Local y:Int = drawEnd + 1 To SCREEN_Height + 1
currentDist = SCREEN_Height / (2.0 * y - SCREEN_Height + 1) 'you could make a small lookup table For this instead

Local weight:Double = (currentDist - distPlayer) / (distWall - distPlayer)

Local currentFloorX:Double = weight * floorXWall + (1.0 - weight) * posX
Local currentFloorY:Double = weight * floorYWall + (1.0 - weight) * posY

Local floorTexX:Int = Int(currentFloorX * textureWidth) Mod textureWidth
Local floorTexY:Int = Int(currentFloorY * textureHeight) Mod textureHeight

DrawSubImageRect( floorImage, x, y, 1, 1, floorTexX, floorTexY, 1, 1)
Next


Es sei hier aber angemerkt, dass ein Raycaster mit Max2D nicht unbedingt schnell sein wird, da es nicht für direkte Pixelmanipulation ausgelegt ist. Mit einer Library wie SDL wäre dir da besser beraten (obwohl ich gar nicht sicher bin, ob dafür schon ein Wrapper existiert).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

shootermaker

BeitragDo, Jul 14, 2011 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Noobody.
Dachte immer meine Berechnung des Bodens stimmt nicht aber ich glaube ich war einfach schon zu lange am programmieren. Wink

Das es langsam läuft war mir schon fast klar (liegt wie du schon sagtest an den langsamen 2D - Befehlen).

Werde mal versuchen so etwas in der art mit opengl umzusetzen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group