Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Floor Mapper problem :(

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 30.09.2012, 09:16    Titel: Floor Mapper problem :( Antworten mit Zitat

Hi ich wollte für mein kleines Game eine Art Floormapper Effekt einbauen.

Ich hatte mir einige Tuts schon angeschaut, bin aber daraus nicht wirklich schlau geworden vielleicht kann der ein oder andere mir was zu den Ablauf einer Floormapper Routine erklären.

Bisher benutze ich diesen code zum testen, der aber nicht richtig klappen will.

Code:


#Include "fbgfx.bi"


Dim screen_width As Integer = 320
Dim screen_height As Integer = 240

ScreenRes screen_width,screen_height,32

'---------------------------------

Declare sub SetPixelFast (PosX as integer, PosY as integer, Farbe as uinteger)
Dim Shared As Byte Ptr framebuffer
Dim Shared pitch As Integer
ScreenInfo ,,,,pitch

'---------------------------------

Const sc = 128

'generate texture
DIM tex(63, 63) As Integer
FOR v As Integer  = 0 TO 63
   FOR u As Integer = 0 TO 63
      tex(u, v) = u XOR v
   NEXT
Next

'For coordinate system with the origin at the + sign,
'and up is +, and right is +, units in pixels.
Dim h As Integer = -20
CONST d = 100
CONST ytop = 0, ybot = 99


DIM lut(ytop TO ybot) As Double
FOR y As Integer = ytop TO ybot
   lut(y) = CSNG(h) / (h - y)
NEXT

Dim p As Double
Dim v As Double
Dim u As Double
Dim vv As Double
Dim du As Double

'---------------------------------

Do
   
   
         
   ScreenLock
      Cls
      
      
      
      
      FOR vofs As Integer = 0 TO 1000
   p = 0
   FOR y As Integer = ytop TO ybot
      v = vofs + d * lut(y)
      vv = v AND 63
      u = -160 * lut(y)
      du = lut(y)
      FOR x As Integer = 0 TO 319
         'PSET (x, y + 100), tex(u AND 63, vv)
         SetPixelFast(x,y + 140,tex(u AND 63, vv))
         u = u + du
         p = p + 5
      NEXT x
   NEXT y

   
NEXT vofs

      
   ScreenUnLock
   
   Sleep 10
Loop Until InKey = "q"


End




'####################################################

sub SetPixelFast (PosX as integer, PosY as integer, Farbe as UInteger)
 
  framebuffer = ScreenPtr + (PosY * pitch) + (PosX * 4)
 
  Asm
     mov eax,[framebuffer]
     mov ebx,[Farbe]
     mov dword Ptr [eax],ebx
  End Asm
 
end Sub

'#################################################

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 30.09.2012, 15:27    Titel: Nachfrage Antworten mit Zitat

Wenn ich den Code ausführe, erkenne ich in dunkelblau eine Art Pseudo-3d-Boden. Jetzt frage ich mich, wo genau drückt der Schuh?
Was genau hast du vor?
Ich kenne den Begriff Floormapper nicht, worum handelt es sich da? Um 2d/3d? Obenansicht/Seitenansicht?
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz