  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		0oFreako0
 
 
  Anmeldungsdatum: 17.12.2011 Beiträge: 114
 
  | 
		
			
				 Verfasst am: 30.09.2012, 08:16    Titel: Floor Mapper problem :( | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		SpionAtom
 
 
  Anmeldungsdatum: 10.01.2005 Beiträge: 395
 
  | 
		
			
				 Verfasst am: 30.09.2012, 14:27    Titel: Nachfrage | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
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.
  | 
   
 
     |