Kann ich ChangeGamma&3D Engine nicht auf einmal benutzen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Kann ich ChangeGamma&3D Engine nicht auf einmal benutzen

Beitrag von Vermilion »

Warum zum Kuckuck beschwert sich der Compiler in folgendem SourceCode beim Befehl "ChangeGamma(R, G, B, Flag)" mit "invalid Memory Access"?

Code: Alles auswählen

Global FramesPerSecond  = 0
Global State = 0

#CameraSpeed = 3

Global KeyX.f
Global KeyY.f
Global MouseDeltaX.f
Global MouseDeltaY.f
Global Fade = 0
Global FadeDirection = 1
Global OldTime = ElapsedMilliseconds()
Global NewTime = ElapsedMilliseconds()
Global Video = 0
Global DisplayChapterTitle = 1
Global PlayMovie = 0

Procedure FX_Aging(R, G, B)

StartDrawing(ScreenOutput())
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
  Line(Random(800), 0, 0, 800, RGB(R, G, B))
StopDrawing()

Result = Random(100)

If Result = 0
  ShowBlot0 = 1
  ShowBlot1 = 0
  ShowBlot2 = 0
ElseIf Result = 1
  ShowBlot0 = 0
  ShowBlot1 = 1
  ShowBlot2 = 0
ElseIf Result = 2
  ShowBlot0 = 0
  ShowBlot1 = 0
  ShowBlot2 = 1
Else
  ShowBlot0 = 0
  ShowBlot1 = 0
  ShowBlot2 = 0
EndIf

If ShowBlot0 = 1
  DisplayTransparentSprite(12, Random(757), Random(536))
EndIf

If ShowBlot1 = 1
  DisplayTransparentSprite(13, Random(721), Random(492))
EndIf

If ShowBlot2 = 1
  DisplayTransparentSprite(14, 0, 0)
EndIf

EndProcedure

UseOGGSoundDecoder()
UsePNGImageDecoder()
InitKeyboard()
InitMouse()
InitEngine3D()
InitSprite()
InitSprite3D()
InitSound()
InitMovie()
OpenScreen(800, 600, 32, "Application")

Sprite = LoadSprite(#PB_Any, "loading.bmp")
DisplaySprite(Sprite, 300, 250)
FlipBuffers()

Add3DArchive("pak000.zip", #PB_3DArchive_Zip)
Add3DArchive("pak001.zip", #PB_3DArchive_Zip)

LoadSound(0, "noise.wav")
LoadSound(1, "theme.ogg")

LoadSprite(0, "Image0.bmp")
LoadSprite(1, "Image1.bmp")
LoadSprite(2, "Image2.bmp")
LoadSprite(3, "Image3.bmp")
LoadSprite(4, "Image4.bmp")
LoadSprite(5, "Image5.bmp")
LoadSprite(6, "Image6.bmp")
LoadSprite(7, "Image7.bmp")
LoadSprite(8, "Image8.bmp")
LoadSprite(9, "Image9.bmp")
LoadSprite(10, "v.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
LoadSprite(11, "x.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
LoadSprite(12, "blot0.bmp")
LoadSprite(13, "blot1.bmp")
LoadSprite(14, "blot2.bmp")
LoadSprite(15, "0.bmp")
LoadSprite(16, "blackscreen.bmp")
LoadSprite(17, "lit.bmp")
Surface = CreateSprite(18, 800, 600, #PB_Sprite_Texture)

LoadMovie(0, "lit.mpg")

CreateSprite3D(0, 10)
CreateSprite3D(1, 11)

MouseLocate(400, 300)
Sprite3DQuality(1)

PlaySound(0, 1)

Sprite = 0

OldTime = ElapsedMilliseconds()

CreateLight(0, RGB(255, 255, 255), 0, 0, 10000)
EnableWorldCollisions(1)
EnableWorldPhysics(1)
WorldShadows(#PB_Shadow_Additive)
AmbientColor(RGB(255,255,255))
Fog(RGB(200, 50, 20), 10, 0, 1000)
CreateMaterial(0, LoadTexture(0, "texture_r2.jpg"))
CreateEntity  (0, LoadMesh(0, "robot.mesh"), MaterialID(0), -1, -2, -3)
SkyDome("sky_red.jpg", 50)
CreateCamera(0,0,0,100, 100)
CameraLocate(0,0,0,1000)

ChangeGamma(0, 0, 0, 1) ; <------------- Da macht der Compiler dicht.

Repeat
If IsScreenActive() <> 0
ExamineKeyboard()
ExamineMouse()
ClearScreen(RGB(0, 0, 0))
MouseX = MouseX() : MouseY = MouseY()

If KeyboardPushed(#PB_Key_F1)
  StopSound(0)
  State = 2
ElseIf KeyboardPushed(#PB_Key_F2)
  StopSound(0)
  State = 3
  OldTime = ElapsedMilliseconds()
  FadeDirection = 1
EndIf

Select State
Case 0

  DisplaySprite(Sprite, 0, 0)
  Sprite = Sprite+1
  If Sprite = 10
    Sprite = 0
  EndIf

  If MouseX < 300
    FadeDir0 = 1
    FadeDir1 = 0
    If MouseButton(1)
      StopSound(0)
      State = 1
    EndIf
  ElseIf MouseX > 500
    FadeDir1 = 1
    FadeDir0 = 0
    If MouseButton(1)
      CloseScreen()
      End
    EndIf
  Else
    FadeDir1 = 0
    FadeDir0 = 0
  EndIf
  
  If FadeDir0 = 1 And Fade0 < 130
    Fade0 = Fade0+5
  ElseIf FadeDir0 = 0 And Fade0 > 0
    Fade0 = Fade0-5
  EndIf

  If FadeDir1 = 1 And Fade1 < 130
    Fade1 = Fade1+5
  ElseIf FadeDir1 = 0 And Fade1 > 0
    Fade1 = Fade1-5
  EndIf

  RotateSprite3D(0, -1, 1)
  RotateSprite3D(1, 1, 1)
  
  Start3D()
    DisplaySprite3D(0, 168, 268, Fade0)
    DisplaySprite3D(1, 568, 268, Fade1)
  Stop3D()
  
Case 1
  
  DisplayTranslucentSprite(15, 150, 235, Fade)
  
  FX_Aging(32, 0, 64)
  
Case 2
  
  If KeyboardPushed(#PB_Key_A)
    KeyX = -#CameraSpeed 
  ElseIf KeyboardPushed(#PB_Key_D)
    KeyX = #CameraSpeed 
  Else
    KeyX = 0
  EndIf
                  
  If KeyboardPushed(#PB_Key_W)
    KeyZ = -#CameraSpeed 
  ElseIf KeyboardPushed(#PB_Key_S)
    KeyZ = #CameraSpeed 
  Else
    KeyZ = 0
  EndIf
  
  If KeyboardPushed(#PB_Key_LeftControl)
    KeyY = -#CameraSpeed 
  ElseIf KeyboardPushed(#PB_Key_Space)
    KeyY = #CameraSpeed 
  Else
    KeyY = 0
  EndIf
  
  MouseDeltaX = -(MouseDeltaX()/10)*#CameraSpeed/2
  MouseDeltaY = -(MouseDeltaY()/10)*#CameraSpeed/2
        
  RotateCamera(0, MouseDeltaX, MouseDeltaY, RollZ)
  MoveCamera  (0, KeyX, KeyY, KeyZ)
     
  RenderWorld()
  
Case 3
  
  NewTime = ElapsedMilliseconds()
  
  If NewTime > OldTime+5000 And PlayMovie = 0
    FadeDirection = -1
  EndIf
  
  If NewTime > OldTime+10000 And PlayMovie = 0
    PlayMovie(0, #PB_Movie_Rendered)
    Video = 1
    FadeDirection = 1
    PlayMovie = 1
    OldTime = NewTime
  EndIf
  
  If NewTime > OldTime+218000
    FadeDirection = -1
  EndIf
    
  If FadeDirection = 1 And Fade < 255
    Fade = Fade+1
  ElseIf FadeDirection = -1 And Fade > 0
    Fade = Fade-1
  EndIf
  
  If DisplayChapterTitle = 1
    DisplaySprite(17, 200, 250)
  EndIf
  
  If Video = 1
    RenderMovieFrame(0, Surface)
    DisplaySprite(18, 0, 0)
  
    StartDrawing(ScreenOutput())
      Box(0, 0, 800, 140, RGB(0, 0, 0))
      Box(0, 460, 800, 140, RGB(0, 0, 0))
    StopDrawing()
  EndIf
  
  ChangeGamma(Fade, Fade, Fade, 0)
  
Default
  CloseScreen()
  MessageRequester("Error", "0")
  End

EndSelect

FlipBuffers()
EndIf
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
Ich habe mal Testweise die 3D Engine bzw. die 3D Befehle der OGRE Engine rausgemacht, und da ging es.
Dieser Compiler findet immer was zu meckern... /:->
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Keiner eine Ahnung? :cry:
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Dann eben nicht... :(
Antworten