Seite 1 von 1

Programm wird lahm

Verfasst: 02.03.2012 11:43
von Drago
Hallo Leute !

Das Programm wird richtig lahm und ich weis nicht woran es liegt.
Habe mal etwas Code zusammen gebastelt, damit ihr seht was ich
meine.

Code: Alles auswählen

EnableExplicit
;**************************************************************************************************************************
;                                            Konstanten declarieren
;**************************************************************************************************************************
#ScreenWidth = 1024
#ScreenHeigth = 768

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitSprite3D() = 0 Or InitSound() = 0 Or InitMouse() = 0
  MessageRequester( "Error", "Can't open DirectX 7 or later", 0 )
  End
EndIf

If OpenScreen( #ScreenWidth, #ScreenHeigth, 32, "Test3D", 0 ) = 0
  MessageRequester( "Error", "Can't open Screen", 0 )
  End
EndIf

Define Font1.l
Define Pure.l
Define i.l
Define r.l
Define Sprite1.l

Font1 = LoadFont( #PB_Any , "Arial", 120, #PB_Font_Bold ) 

ClearScreen( RGB( 1, 1, 1 ) )

StartDrawing( ScreenOutput() )

DrawingFont( FontID( Font1 ) )
DrawingMode( #PB_2DDrawing_Transparent )
DrawText( 3, 3, "PURE BASIC", RGB( 0,0,0 ) )
DrawingMode( #PB_2DDrawing_Outlined )
Box( 0, 0, 1024, 200, RGB( 255, 0, 0 ) )

StopDrawing()

Pure = GrabSprite( #PB_Any, 0, 0, 1024, 200, #PB_Sprite_Texture )
Pure = CreateSprite3D( #PB_Any, Pure )
Define i.l
Define Col.l
Define Sprite1.l

Repeat
  
  ClearScreen( RGB( 1, 1, 1 ) )
  
  StartDrawing( ScreenOutput() )
  
For i = 0 To 14
  
  Box( 0, 230 + i * 21, 1024, 20, RGB( Random( 50 ) + 200, Random( 50 ) + 200, Random( 50 ) + 200 ) )
  
Next 
  
StopDrawing()

Start3D()

Sprite3DQuality( 1 )
ZoomSprite3D( Pure, 1024,  500 )
DisplaySprite3D( Pure, 0, 150, 255 )

Stop3D()

If IsSprite( Sprite1 ): FreeSprite( Sprite1 ): EndIf
If IsSprite3D( Sprite1 ): FreeSprite3D( Sprite1 ): EndIf
Sprite1 = GrabSprite( #PB_Any, 0, 150, 1024, 500, #PB_Sprite_Texture )
Sprite1 = CreateSprite3D( #PB_Any, Sprite1 )

Start3D()
Sprite3DQuality( 1 )
ZoomSprite3D( Sprite1, 150, 50 )
RotateSprite3D( Sprite1, r, 0 )
DisplaySprite3D( Sprite1, 400, 100, 255 )

r + 1
If r = 360: r = 0:EndIf

Stop3D()

FlipBuffers()

  ExamineKeyboard()
Until KeyboardPushed( #PB_Key_Escape )
End

Re: Programm wird lahm

Verfasst: 02.03.2012 13:07
von The_Dark_Zim-.-
Hey

"GrabSprite()" ist/scheint sehr langsam zu sein ;)

Re: Programm wird lahm

Verfasst: 02.03.2012 13:10
von Drago
Aber soooooo lahm ? Ist doch nichts zu tun.....

Re: Programm wird lahm

Verfasst: 02.03.2012 13:26
von NicTheQuick
Ohne mich mit der Sprite-Sache auszukennen und ohne den Code zu testen, tippe ich auf folgendes:

Code: Alles auswählen

Sprite1 = GrabSprite( #PB_Any, 0, 150, 1024, 500, #PB_Sprite_Texture )
Sprite1 = CreateSprite3D( #PB_Any, Sprite1 )
Du erstellst ein Sprite namens 'Sprite1' und danach daraus ein Sprite3D ebenfalls mit Namen 'Sprite1'. Damit ist das erste Sprite verschollen und es wird niemals freigegeben. Speicher dein Sprite3D doch in der Variable 'Sprite3D1' oder so ähnlich. Dann klappt's auch mit der Lahmheit.

Re: Programm wird lahm

Verfasst: 02.03.2012 13:39
von Drago
@NicTheQuick:

Das habe ich eben auch gemacht, wollte es gerade hier rein stellen,
du warst aber schaneller.

Vielen lieben Dank....