hab vor Ewigkeiten schonmal angefragt und erstmal herausgekriegt, daß das was ich machen wollte "Interpolieren" heißt.
Vielen Dank dafür mal...
Leider war das Projekt eingeschlafen und jetzt habe ich mal wieder ein wenig Zeit gefunden zu coden und stoße gleich wieder an meine Grenzen
Zum Hintergrund: Ich will ein Feld 16x16 interpoliert darstellen. (16x16-Klötzchen sehen scheiße aus
Schaut euch mal den Code an und sagt mir bitte, wie ich den schneller bekomme:
Code: Alles auswählen
Enumeration
#Window
#Button1
#Button2
#Button3
#Text1
#Sprite
#SpriteF0
#SpriteF1
#SpriteF2
#SpriteF3
#SpriteF4
#SpriteF5
#SpriteF6
#SpriteF7
#SpriteF8
#SpriteF9
#SpriteF10
#SpriteF11
#TIMER
EndEnumeration
Global Grenze0.w   
Global Grenze1.w   
Global Grenze2.w   
Global Grenze3.w   
Global Grenze4.w   
Global Grenze5.w   
Global Grenze6.w   
Global Grenze7.w   
Global Grenze8.w   
Global Grenze9.w   
Global Grenze10.w  
Global Grenze11.w  
Grenze0     = 50
Grenze1     = 70
Grenze2     = 110
Grenze3     = 130
Grenze4     = 160
Grenze5     = 180
Grenze6     = 190
Grenze7     = 200
Grenze8     = 210
Grenze9     = 220
Grenze10    = 230
Grenze11    = 240
Global Dim Farbe.l(11)
Farbe(0)     = $0000FF
Farbe(1)     = $0060E0
Farbe(2)     = $0080E0
Farbe(3)     = $00A0E0
Farbe(4)     = $00C0E0
Farbe(5)     = $00E0E0
Farbe(6)     = $00E0A0
Farbe(7)     = $00E040
Farbe(8)     = $80E000
Farbe(9)     = $C0C000
Farbe(10)    = $C08000
Farbe(11)    = $E8E8E8
                ;BGR
Global Grafikmodus.l = 0
Global Dim feldnormiert.w(16,16)
Global Dim feld_interpolierty1.w(16,32)
Global Dim feld_interpoliert1.w(32,32)
Global Dim feld2_interpolierty2.w(31,62)
Global Dim feld2_interpoliert2.w(62,62)
Global Dim feld3_interpolierty3.w(122,122)
Global Dim feld3_interpoliert3.w(122,122)
Global FP10S_Counter.w = 0
;********************Init Direct3D***************************** 
Global XPos
Global addX
Global YPos
Global addY
Structure MyVertices 
  x1.f 
  y1.f 
  z1.f 
  rhw1.f 
  color1.l 
  diffuse1.l 
  
  x2.f 
  y2.f 
  z2.f 
  rhw2.f 
  color2.l 
  diffuse2.l 
  
  x3.f 
  y3.f 
  z3.f 
  rhw3.f 
  color3.l 
  diffuse3.l 
  
  x4.f 
  y4.f 
  z4.f 
  rhw4.f 
  color4.l 
  diffuse4.l      
EndStructure 
#D3DCLEAR_TARGET=1 
#D3DFVF_XYZRHW=4 
#D3DFVF_DIFFUSE=64 
#D3DFVF_SPECULAR=128 
#D3DPT_POINTLIST=1 
#D3DPT_LINELIST=2      
#D3DPT_TRIANGLELIST=4 
#D3DPT_TRIANGLESTRIP=5 
#D3DRENDERSTATE_CULLMODE=22 
#D3DRENDERSTATE_DITHERENABLE=26 
#D3DRENDERSTATE_SPECULARENABLE=29 
#D3DRENDERSTATE_COLORKEYENABLE=41 
#D3DRENDERSTATE_LIGHTING=137 
#D3DCULL_NONE=1 
#D3DCULL_CCW=3 
    
Procedure Sprite3D_Start2DDrawing() 
  Global Sprite3D_Points.MyVertices 
  Global *D3DDevice.IDirect3DDevice7 
  Global TempSprite 
  
  !extrn _PB_Direct3D_Device 
  !MOV Eax,[_PB_Direct3D_Device] 
  !MOV [p_D3DDevice],Eax 
  
  Sprite3D_Points\rhw1=1.0 
  Sprite3D_Points\rhw2=1.0 
  Sprite3D_Points\rhw3=1.0 
  Sprite3D_Points\rhw4=1.0 
  
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_COLORKEYENABLE,0) ; disables colorkey 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_SPECULARENABLE,1) 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_DITHERENABLE,1) ; enables dithering (improves the quality) 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_LIGHTING,0); deactivates lighting 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_CULLMODE,#D3DCULL_NONE); disables culling 
  
  CapsBuffer=AllocateMemory(228) 
  *D3DDevice\GetCaps(CapsBuffer) 
  
  minTextureWidth=PeekL(CapsBuffer+124) 
  minTextureHeight=PeekL(CapsBuffer+128) 
  FreeMemory(CapsBuffer) 
  
  TempSprite=CreateSprite(#PB_Any,minTextureWidth,minTextureHeight,#PB_Sprite_Texture) 
  If IsSprite(TempSprite) 
    *D3DDevice\SetTexture(0,PeekL(IsSprite(TempSprite))) 
  EndIf 
EndProcedure 
Procedure Sprite3D_Stop2DDrawing() 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_COLORKEYENABLE,1);enable colorkey 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_SPECULARENABLE,0) 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_DITHERENABLE,0) 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_LIGHTING,1); activate lighting 
  *D3DDevice\SetRenderState(#D3DRENDERSTATE_CULLMODE,#D3DCULL_CCW) 
  FreeSprite(TempSprite) 
EndProcedure 
Procedure Sprite3D_DrawLine2D(x1.f,y1.f,x2.f,y2.f,RGB1,RGB2) 
  Sprite3D_Points\x1=x1 
  Sprite3D_Points\y1=y1 
  Sprite3D_Points\diffuse1=RGB1>>16+(RGB1&$FF00)+(RGB1&$FF)<<16 ;convert RGB to BGR 
  Sprite3D_Points\x2=x2 
  Sprite3D_Points\y2=y2 
  Sprite3D_Points\diffuse2=RGB2>>16+(RGB2&$FF00)+(RGB2&$FF)<<16 
  ProcedureReturn *D3DDevice\DrawPrimitive(#D3DPT_LINELIST,#D3DFVF_XYZRHW|#D3DFVF_SPECULAR|#D3DFVF_DIFFUSE,@Sprite3D_Points,2,0) 
EndProcedure 
Procedure Sprite3D_ClearScreen(RGB) 
  *D3DDevice\Clear(0,0,#D3DCLEAR_TARGET,RGB>>16+(RGB&$FF00)+(RGB&$FF)<<16,0,0) 
EndProcedure 
Procedure Sprite3D_DrawTriangle2D(x1.f,y1.f,x2.f,y2.f,x3.f,y3.f,RGB1,RGB2,RGB3) 
  Sprite3D_Points\x1=x1 
  Sprite3D_Points\y1=y1 
  Sprite3D_Points\diffuse1=RGB1>>16+(RGB1&$FF00)+(RGB1&$FF)<<16 
  Sprite3D_Points\x2=x2 
  Sprite3D_Points\y2=y2 
  Sprite3D_Points\diffuse2=RGB2>>16+(RGB2&$FF00)+(RGB2&$FF)<<16 
  Sprite3D_Points\x3=x3 
  Sprite3D_Points\y3=y3 
  Sprite3D_Points\diffuse3=RGB3>>16+(RGB3&$FF00)+(RGB3&$FF)<<16 
  ProcedureReturn *D3DDevice\DrawPrimitive(#D3DPT_TRIANGLELIST,#D3DFVF_XYZRHW|#D3DFVF_SPECULAR|#D3DFVF_DIFFUSE,@Sprite3D_Points,3,0) 
EndProcedure 
Procedure Sprite3D_DrawBox2D(X.f,Y.f,Width.f,Height.f,RGB1,RGB2,RGB3,RGB4) 
  Sprite3D_Points\x1=X ;Pos_links_oben
  Sprite3D_Points\y1=Y 
  Sprite3D_Points\diffuse1=RGB1>>16+(RGB1&$FF00)+(RGB1&$FF)<<16 
  Sprite3D_Points\x2=X+Width ;Pos_rechts_oben
  Sprite3D_Points\y2=Y 
  Sprite3D_Points\diffuse2=RGB2>>16+(RGB2&$FF00)+(RGB2&$FF)<<16 
  Sprite3D_Points\x3=X       ;Pos_links_unten
  Sprite3D_Points\y3=Y+Height 
  Sprite3D_Points\diffuse3=RGB3>>16+(RGB3&$FF00)+(RGB3&$FF)<<16 
  Sprite3D_Points\x4=X+Width  ;Pos_rechts_unten
  Sprite3D_Points\y4=Y+Height 
  Sprite3D_Points\diffuse4=RGB4>>16+(RGB4&$FF00)+(RGB4&$FF)<<16 
  ProcedureReturn *D3DDevice\DrawPrimitive(#D3DPT_TRIANGLESTRIP,#D3DFVF_XYZRHW|#D3DFVF_SPECULAR|#D3DFVF_DIFFUSE,@Sprite3D_Points,4,0) 
EndProcedure 
;#D3DPT_TRIANGLESTRIP,
Procedure Sprite3D_DrawPixel2D(X.f,Y.f,RGB) 
  Sprite3D_Points\x1=X 
  Sprite3D_Points\y1=Y 
  Sprite3D_Points\diffuse1=RGB>>16+(RGB&$FF00)+(RGB&$FF)<<16 
  ProcedureReturn *D3DDevice\DrawPrimitive(#D3DPT_POINTLIST,#D3DFVF_XYZRHW|#D3DFVF_SPECULAR|#D3DFVF_DIFFUSE,@Sprite3D_Points,1,0) 
EndProcedure 
Procedure feld_zeichnen121x121()
FP10S_Counter + 1
If Grafikmodus = 1
     StartDrawing(SpriteOutput(#Sprite)) 
        
                       For ky = 0 To 120 
                        For kx = 0 To 120
                               
                           If feld3_interpoliert3(ky,kx)   = < Grenze1    
                            Box(4*kx,4*ky,4,4,Farbe(11))
                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze2 And feld3_interpoliert3(ky,kx) >Grenze1
                               Box(4*kx,4*ky,4,4,Farbe(10))
                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze3 And feld3_interpoliert3(ky,kx) >Grenze2
                                Box(4*kx,4*ky,4,4,Farbe(9))
                                 ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze3
                                  Box(4*kx,4*ky,4,4,Farbe(8))
                                   ElseIf feld3_interpoliert3(ky,kx)   =< Grenze5 And feld3_interpoliert3(ky,kx) >Grenze4
                                    Box(4*kx,4*ky,4,4,Farbe(7))
                                     ElseIf feld3_interpoliert3(ky,kx)   =< Grenze6 And feld3_interpoliert3(ky,kx) >Grenze5
                                      Box(4*kx,4*ky,4,4,Farbe(6))
                                       ElseIf feld3_interpoliert3(ky,kx)   =< Grenze7 And feld3_interpoliert3(ky,kx) >Grenze6
                                        Box(4*kx,4*ky,4,4,Farbe(5))
                                         ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze7
                                          Box(4*kx,4*ky,4,4,Farbe(4))
                                           ElseIf feld3_interpoliert3(ky,kx)   =< Grenze9 And feld3_interpoliert3(ky,kx) >Grenze4
                                            Box(4*kx,4*ky,4,4,Farbe(3))
                                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze10 And feld3_interpoliert3(ky,kx) >Grenze9
                                              Box(4*kx,4*ky,4,4,Farbe(2)) 
                                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze11 And feld3_interpoliert3(ky,kx) >Grenze10
                                                Box(4*kx,4*ky,4,4,Farbe(1))
                                                 ElseIf feld3_interpoliert3(ky,kx) > Grenze11
                                                  Box(4*kx,4*ky,4,4,Farbe(0))
                          
                           EndIf
                        Next
                      Next   
                        
StopDrawing()                   
FlipBuffers()
DisplaySprite(#Sprite,0,0)
;andere Methode
  ElseIf Grafikmodus = 0
  Start3D()
  Sprite3D_Start2DDrawing()
 
                       For ky = 0 To 120 
                        For kx = 0 To 120
                               
                           If feld3_interpoliert3(ky,kx)   = < Grenze1    
                            Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(11),Farbe(11),Farbe(11),Farbe(11))
                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze2 And feld3_interpoliert3(ky,kx) >Grenze1
                               Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(10),Farbe(10),Farbe(10),Farbe(10))
                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze3 And feld3_interpoliert3(ky,kx) >Grenze2
                                Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(9),Farbe(9),Farbe(9),Farbe(9))
                                 ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze3
                                  Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(8),Farbe(8),Farbe(8),Farbe(8))
                                   ElseIf feld3_interpoliert3(ky,kx)   =< Grenze5 And feld3_interpoliert3(ky,kx) >Grenze4
                                    Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(7),Farbe(7),Farbe(7),Farbe(7))
                                     ElseIf feld3_interpoliert3(ky,kx)   =< Grenze6 And feld3_interpoliert3(ky,kx) >Grenze5
                                      Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(6),Farbe(6),Farbe(6),Farbe(6))
                                       ElseIf feld3_interpoliert3(ky,kx)   =< Grenze7 And feld3_interpoliert3(ky,kx) >Grenze6
                                        Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(5),Farbe(5),Farbe(5),Farbe(5))
                                         ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze7
                                          Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(4),Farbe(4),Farbe(4),Farbe(4))
                                           ElseIf feld3_interpoliert3(ky,kx)   =< Grenze9 And feld3_interpoliert3(ky,kx) >Grenze4
                                            Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(3),Farbe(3),Farbe(3),Farbe(3))
                                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze10 And feld3_interpoliert3(ky,kx) >Grenze9
                                              Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(2),Farbe(2),Farbe(2),Farbe(2)) 
                                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze11 And feld3_interpoliert3(ky,kx) >Grenze10
                                                Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(1),Farbe(1),Farbe(1),Farbe(1))
                                                 ElseIf feld3_interpoliert3(ky,kx) > Grenze11
                                                  Sprite3D_DrawBox2D(4*kx,4*ky,4,4,Farbe(0),Farbe(0),Farbe(0),Farbe(0))
                          
                           EndIf
                        Next
                      Next
                      
  Sprite3D_Stop2DDrawing() 
  Stop3D()
;Grafikmodus Sprites  
  ElseIf Grafikmodus = 2
     StartDrawing(SpriteOutput(#Sprite)) 
       
                       For ky = 0 To 120 
                        For kx = 0 To 120
                               
                           If feld3_interpoliert3(ky,kx)   = < Grenze1    
                            DisplaySprite(#SpriteF11,4*kx,4*ky)
                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze2 And feld3_interpoliert3(ky,kx) >Grenze1
                               DisplaySprite(#SpriteF10,4*kx,4*ky)
                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze3 And feld3_interpoliert3(ky,kx) >Grenze2
                                DisplaySprite(#SpriteF9,4*kx,4*ky)
                                 ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze3
                                  DisplaySprite(#SpriteF8,4*kx,4*ky)
                                   ElseIf feld3_interpoliert3(ky,kx)   =< Grenze5 And feld3_interpoliert3(ky,kx) >Grenze4
                                    DisplaySprite(#SpriteF7,4*kx,4*ky)
                                     ElseIf feld3_interpoliert3(ky,kx)   =< Grenze6 And feld3_interpoliert3(ky,kx) >Grenze5
                                      DisplaySprite(#SpriteF6,4*kx,4*ky)
                                       ElseIf feld3_interpoliert3(ky,kx)   =< Grenze7 And feld3_interpoliert3(ky,kx) >Grenze6
                                        DisplaySprite(#SpriteF5,4*kx,4*ky)
                                         ElseIf feld3_interpoliert3(ky,kx)   =< Grenze4 And feld3_interpoliert3(ky,kx) >Grenze7
                                          DisplaySprite(#SpriteF4,4*kx,4*ky)
                                           ElseIf feld3_interpoliert3(ky,kx)   =< Grenze9 And feld3_interpoliert3(ky,kx) >Grenze4
                                            DisplaySprite(#SpriteF3,4*kx,4*ky)
                                             ElseIf feld3_interpoliert3(ky,kx)   =< Grenze10 And feld3_interpoliert3(ky,kx) >Grenze9
                                              DisplaySprite(#SpriteF2,4*kx,4*ky)
                                               ElseIf feld3_interpoliert3(ky,kx)   =< Grenze11 And feld3_interpoliert3(ky,kx) >Grenze10
                                                DisplaySprite(#SpriteF1,4*kx,4*ky)
                                                 ElseIf feld3_interpoliert3(ky,kx) > Grenze11
                                                  DisplaySprite(#SpriteF0,4*kx,4*ky)
                          
                           EndIf
                        Next
                      Next   
                        
StopDrawing()                   
FlipBuffers()
  
  
 Else
   MessageRequester("Fehler","Selektierungsfehler Grafikmodus" ,0) 
 EndIf  
  
  
  FlipBuffers()        
             
EndProcedure
;*************************************************************************************************
Procedure feld_interpolieren121x121()
  
  m.w 
  m=0
;Auf 31x31 
 ;Interpolieren entlang der x-Achse
  
    For x = 0 To 15
      For y = 0 To 15 
        feld_interpolierty1(x,m)=feldnormiert(x,y)
        m=m+1
        feld_interpolierty1(x,m)=(feldnormiert(x,y)+feldnormiert(x,y+1))/2
        m=m+1
      Next   
      feld_interpolierty1(x,m)=feldnormiert(x,15)
      m=0
    Next
    
;Interpolieren entlang der y-Achse
    m=0
    For y = 0 To 30 
      For x = 0 To 15
        feld_interpoliert1(m,y)=feld_interpolierty1(x,y)
        m=m+1
        feld_interpoliert1(m,y)=(feld_interpolierty1(x,y)+feld_interpolierty1(x+1,y))/2
        m=m+1
      Next   
      feld_interpoliert1(m,y)=feld_interpolierty1(x,31)
      m=0
    Next 
;Auf 61x61
  ;Interpolieren entlang der x-Achse
 
  
  For x = 0 To 30
    For y = 0 To 30 
      feld2_interpolierty2(x,m)=feld_interpoliert1(x,y)
      m=m+1
      feld2_interpolierty2(x,m)=(feld_interpoliert1(x,y)+feld_interpoliert1(x,y+1))/2
      m=m+1
    Next   
    feld2_interpolierty2(x,m)=feld_interpoliert1(x,30)
    m=0
  Next
  
  ;Interpolieren entlang der y-Achse
  m=0
  For y = 0 To 60
    For x = 0 To 30
      feld2_interpoliert2(m,y)=feld2_interpolierty2(x,y)
      m=m+1
      feld2_interpoliert2(m,y)=(feld2_interpolierty2(x,y)+feld2_interpolierty2(x+1,y))/2
      m=m+1
    Next   
    feld2_interpoliert2(m,y)=feld2_interpolierty2(x,31)
    m=0
  Next 
 
 
 
;Auf 121x121 
  ;Interpolieren entlang der x-Achse
  
  For x = 0 To 60
    For y = 0 To 60 
      feld3_interpolierty3(x,m)=feld2_interpoliert2(x,y)
      m=m+1
      feld3_interpolierty3(x,m)=(feld2_interpoliert2(x,y)+feld2_interpoliert2(x,y+1))/2
      m=m+1
    Next   
    feld3_interpolierty3(x,m)=feld2_interpoliert2(x,60)
    m=0
  Next
  
  ;Interpolieren entlang der y-Achse
  m=0
  For y = 0 To 120
    For x = 0 To 60
      feld3_interpoliert3(m,y)=feld3_interpolierty3(x,y)
      m=m+1
      feld3_interpoliert3(m,y)=(feld3_interpolierty3(x,y)+feld3_interpolierty3(x+1,y))/2
      m=m+1
    Next   
    feld3_interpoliert3(m,y)=feld3_interpolierty3(x,61)
    m=0
  Next 
  
EndProcedure
Procedure feld_erstellen()
    For x = 0 To 15 
      For y = 0 To 15 
        feldnormiert(x,y)=Random(300)
      Next
    Next   
EndProcedure
;*************************************************************************************************
If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf
InitSprite3D() 
If OpenWindow(#Window,0,0,610,510,"Speed Test",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(#Window))
    ButtonGadget(#Button1,540, 10,60,20,"Box")
    ButtonGadget(#Button2,540, 40,60,20,"Sprite3D")
    ButtonGadget(#Button3,540, 70,60,20,"SpriteResize")
    TextGadget  (#Text1,540,110,60,30,"")
  EndIf
  
  If OpenWindowedScreen(WindowID(#Window),5,5,484,484,0,0,0)
    CreateSprite(#Sprite,484,484)
  Else
    MessageRequester("Error", "Can't open windowed screen!", 0)
    End
  EndIf
EndIf
  ;******************** Timer ***********************************
   SetTimer_(WindowID(#Window), #TIMER, 1000, 0)   
   CreateSprite(#SpriteF0, 4, 4)
   CreateSprite(#SpriteF1, 4, 4)
   CreateSprite(#SpriteF2, 4, 4)
   CreateSprite(#SpriteF3, 4, 4)
   CreateSprite(#SpriteF4, 4, 4)
   CreateSprite(#SpriteF5, 4, 4)
   CreateSprite(#SpriteF6, 4, 4)
   CreateSprite(#SpriteF7, 4, 4)
   CreateSprite(#SpriteF8, 4, 4)
   CreateSprite(#SpriteF9, 4, 4)
   CreateSprite(#SpriteF10, 4, 4)
   CreateSprite(#SpriteF11, 4, 4)
   StartDrawing(SpriteOutput(#SpriteF0))
     Box(0,0,4,4,Farbe(0))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF1))
     Box(0,0,4,4,Farbe(1))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF2))
     Box(0,0,4,4,Farbe(2))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF3))
     Box(0,0,4,4,Farbe(3))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF4))
     Box(0,0,4,4,Farbe(4))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF5))
     Box(0,0,4,4,Farbe(5))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF6))
     Box(0,0,4,4,Farbe(6))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF7))
     Box(0,0,4,4,Farbe(7))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF8))
     Box(0,0,4,4,Farbe(8))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF9))
     Box(0,0,4,4,Farbe(9))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF10))
     Box(0,0,4,4,Farbe(10))
   StopDrawing()
   StartDrawing(SpriteOutput(#SpriteF11))
     Box(0,0,4,4,Farbe(11))
   StopDrawing()
Repeat
  Event.l = WindowEvent()    
  
  If Event = #PB_Event_Gadget
    Gadget  = EventGadget()  
    Select Gadget
        
      Case #Button1
        Grafikmodus = 1
        SetGadgetText(#Text1,"Grafikmodus "+Str(Grafikmodus))
        
      Case #Button2
        Grafikmodus = 0
        SetGadgetText(#Text1,"Grafikmodus "+Str(Grafikmodus))
      Case #Button3
        Grafikmodus = 2
        SetGadgetText(#Text1,"Grafikmodus "+Str(Grafikmodus))
        
    EndSelect
  
  Else
    If Event = #WM_TIMER And EventwParam()=#TIMER  
      SetGadgetText(#Text1, Str(FP10S_Counter))
      FP10S_Counter = 0  
    EndIf 
    feld_erstellen()   
    feld_interpolieren121x121()  
    feld_zeichnen121x121() 
    Delay(1)
  EndIf
Until Event = #PB_Event_CloseWindow 
End                               
PS1: Ist wirklich ein Spitzenforum hier... Nur durch die Beantwortung der blödesten Fragen kann auch mir geholfen werden
PS2: Bitte gerne im Code rumspielen und uploaden. Hinweise wie ich etwas umsetzen soll sind zwar auch willkommen, aber vielleicht nicht immer vom Erfolg gekrönt...