ScaleMaterial Layer läßt sich nicht auswählen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Thade
Beiträge: 6
Registriert: 22.11.2004 04:19

ScaleMaterial Layer läßt sich nicht auswählen

Beitrag von Thade »

Hallo
Ich experimentiere grad mit Terrain und TexturLayers
Zum Testen habe ich einige Zeilen in das Terrain Example eingefügt.
Was ich erreichen wollte, war ein Skalieren der Detailtexture mittels Numpad_1 und Numpad_2
Editiert: Mittlerweile habe ich noch Skalieren der Basis Texture Layer 0 eingefügt (Numpad_4 und Numpad_5) und es zeigt sich, daß bei beidem das Gleiche passiert - nur Layer 0 wird skaliert - anscheinend ein Bug.

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Terrain
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 5

IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY, texscale0, texscale1

If InitEngine3D()
  Add3DArchive("Data\"          , #PB_3DArchive_FileSystem)
  Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()

    AmbientColor(RGB(255,255,255))
    
    CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg"))
    AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1 )
    texscale0=1.0
    texscale1=1.0
    CreateTerrain("Terrain.png", MaterialID(0), 4, 0.6, 4, 4)

    CreateCamera(0, 0, 0, 100, 100)
    CameraRange(0,0.01,6000)
    CameraLocate(0, 128, 25, 128)
    
    SkyDome("Clouds.jpg",10)
    
    Repeat
      Screen3DEvents()
            
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf
        
        If KeyboardPushed(#pb_key_pad1)
          texscale1=texscale1-0.001
          ScaleMaterial(0,texscale1, texscale1, 1)  ;hier 1 für Detail Layer
        EndIf
        If KeyboardPushed(#pb_key_pad2)
          texscale1=texscale1+0.001
          ScaleMaterial(0,texscale1, texscale1, 1)  ;hier 1 für Detail Layer
        EndIf
        If KeyboardPushed(#pb_key_pad4)
          texscale0=texscale0-0.001
          ScaleMaterial(0,texscale0, texscale0, 0)  ;hier 0 für Basis Layer
        EndIf
        If KeyboardPushed(#pb_key_pad5)
          texscale0=texscale0+0.001
          ScaleMaterial(0,texscale0, texscale0, 0)  ;hier 0 für Basis Layer
        EndIf

      EndIf
      
      If ExamineMouse()
        MouseX = -(MouseDeltaX()/2)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/2)*#CameraSpeed/2
      EndIf
      
      Height.f = TerrainHeight(CameraX(0), CameraZ(0))
      
      RotateCamera(0, MouseX, MouseY, RollZ)
      MoveCamera  (0, KeyX, -CameraY(0)+Height+8, KeyY)
            
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End
Was ich auch als Layer angebe, es wird nur die Layer 0 Textur skaliert.
Scheint also ein Bug zu sein