  | 
					
						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 | 
	 
	
		AndT
 
 
  Anmeldungsdatum: 02.04.2007 Beiträge: 481
 
  | 
		
			
				 Verfasst am: 21.09.2007, 17:28    Titel: Hintergrund rendern | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Code: | 	 		  DIM ScreenShot AS ANY PTR
 
dim as ulongint himmel 
 
himmel = rgb(64,64,255)
 
print "Rendere Himmel.."
 
dim as integer w,h
 
screeninfo w,h
 
screenres w,h,32
 
 
 
if w = 0 or h=0 then screen 0:Print "GFX Init failed!"
 
 
line (0,0)-(w,h),himmel,bf
 
dim z as double
 
 
for r as double =1 to 28
 
screenlock
 
z=200
 
 
For y as integer = -10 to h
 
    for x as integer = -10 to w
 
        pset(x+int(rnd*8),y+int(rnd*8)+1),rgb(z,z,255)
 
 
next
 
z-=r/250
 
next
 
screenunlock
 
next
 
sleep
 
 | 	  
 
Naja das dauert je nach Auflösung ziemlich lange^^
 
Gibt es einen Trick das ganze zu beschleunigen? _________________ Bis irgendwann...   | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Eternal_pain
 
  
  Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
  | 
		
			
				 Verfasst am: 21.09.2007, 17:35    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				zum einen: Muellcode ueberpruefen.... (vollkommen sinnfrei das teil)
 
 
 	  | Code: | 	 		  
 
DIM ScreenShot AS ANY PTR
 
DIM AS ULONGINT himmel
 
himmel = RGB(64,64,255)
 
PRINT "Rendere Himmel.."
 
DIM AS INTEGER w,h
 
SCREENINFO w,h
 
SCREENRES w,h,32
 
 
Dim Scr as Uinteger ptr=ScreenPtr
 
Dim Adr as UInteger
 
 
IF w = 0 OR h=0 THEN SCREEN 0:PRINT "GFX Init failed!"
 
 
LINE (0,0)-(w,h),himmel,bf
 
DIM z AS DOUBLE
 
 
FOR r AS DOUBLE =1 TO 28
 
SCREENLOCK
 
z=200
 
 
FOR y AS INTEGER = 0 TO h-1
 
    FOR x AS INTEGER = 0 TO w-1
 
        Adr=(x+INT(RND*8)+(y*w)+INT(RND*8)+1)
 
        Scr[Adr]=RGB(z,z,255)
 
 
NEXT
 
z-=r/250
 
NEXT
 
SCREENUNLOCK
 
NEXT
 
SLEEP 
 
 | 	  
 
 
sollte minimal schneller sein... mehr geschwindigkeit gibt wenn Du sinnvollere schleifen schreibst..... _________________
   | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		PMedia
 
 
  Anmeldungsdatum: 14.08.2006 Beiträge: 2847
 
  | 
		
			
				 Verfasst am: 21.09.2007, 20:28    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Das geht aber WESENTLICH schneller:
 
 	  | Code: | 	 		  Dim As Integer w,h
 
Dim As UShort X, Y
 
Dim As UByte R, G, B
 
Dim As UByte R1, G1, B1
 
Dim As UByte R2, G2, B2
 
 
ScreenInfo w,h
 
If w = 0 Or h=0 Then Screen 0:PRINT "GFX Init failed!":SLEEP:END
 
ScreenRes w,h,32
 
 
R1 = 090 : G1 = 130 : B1 = 255
 
R2 = 200 : G2 = 230 : B2 = 230
 
 
ScreenLock
 
For Y = 0 To h
 
   R = (R1 * (1-(Y/H))) + (R2 * (Y/H))
 
   G = (G1 * (1-(Y/H))) + (G2 * (Y/H))
 
   B = (B1 * (1-(Y/H))) + (B2 * (Y/H))
 
   Line (0, Y) - (W, Y), RGB(r,g,b)
 
Next
 
ScreenUnlock
 
 
SLEEP  | 	  
 
 
(Hab mir erlaubt andere Farben zu wählen, sind aber schnell wieder zurückänderbar...)
 
Ganz primitiver Farbverlauf  
 
Und da FBGFX, sogar noch optimierbar. | 
			 
		  | 
	 
	
		| 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.
  | 
   
 
     |