Seite 1 von 1

ScaleMaterial Layer läßt sich nicht auswählen

Verfasst: 10.01.2005 17:06
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