LoadFont mit #PB_Font_Italic und DrawingFont extrem langsam

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Ara
Beiträge: 35
Registriert: 29.08.2004 13:40

Re: LoadFont mit #PB_Font_Italic und DrawingFont extrem langsam

Beitrag von Ara »

Vielleicht nicht die sauberste Lösung, aber einigermaßen schnell.

Code: Alles auswählen

Enumeration
	#Window
	#Sprite
	#Font
EndEnumeration

InitSprite()
OpenConsole()

LoadFont(#Font, "Arial", 500)

OpenWindow(#Window, 0, 0, 1280, 720, "DrawingFont", #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window))

CreateSprite(#Sprite,  1280, 720)
SpriteQuality(#PB_Sprite_BilinearFiltering)

Define StartTime.q

Repeat
	
	Repeat
		
		Select WindowEvent()
			Case #PB_Event_None
				Break
			Case #PB_Event_CloseWindow
				Break 2
		EndSelect
		
	ForEver
	
	If StartDrawing(SpriteOutput(#Sprite))
		StartTime = ElapsedMilliseconds()
		DrawingFont(FontID(#Font))
		DrawText(0, 0, Str(StartTime))
		PrintN(Str(ElapsedMilliseconds() - StartTime))
		StopDrawing()
	EndIf
	
	ClearScreen($000000)
	
	TransformSprite(#Sprite, SpriteHeight(#Sprite)*0.139, 0, SpriteWidth(#Sprite)+SpriteHeight(#Sprite)*0.139, 0, SpriteWidth(#Sprite), SpriteHeight(#Sprite), 0, SpriteHeight(#Sprite))
	DisplaySprite(#Sprite, 0, 0)
	
	FlipBuffers()
	
ForEver

End
Win11 Pro
PureBasic 6.10 LTS
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: LoadFont mit #PB_Font_Italic und DrawingFont extrem langsam

Beitrag von ccode_new »

Anbei:

Das hier ist brauchbar schnell und kann problemlos rotiert und verschoben werden.

Code: Alles auswählen

Enumeration
  #Window
  #Sprite
  #Image
  #Font
EndEnumeration

InitSprite()
OpenConsole()

LoadFont(#Font, "arial", 500, #PB_Font_Italic)

OpenWindow(#Window, 0, 0, 1280, 720, "DrawingFont", #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window))

CreateImage(#Image, ScreenWidth(), ScreenHeight())

CreateSprite(#Sprite,  ScreenWidth(), ScreenHeight())

Define StartTime.q

Repeat
  
  Repeat
    
    Select WindowEvent()
      Case #PB_Event_None
        Break
      Case #PB_Event_CloseWindow
        Break 2
    EndSelect
    
  ForEver
  
  If StartVectorDrawing(ImageVectorOutput(#Image, #PB_Unit_Pixel))
    StartTime = ElapsedMilliseconds()
    
    VectorSourceColor(RGBA(0,0,0,255))
    AddPathBox(0, 0, ImageWidth(#Image), ImageHeight(#Image))
    FillPath()
    
    VectorFont(FontID(#Font))
    VectorSourceColor(RGBA(255,255,255,255))
  
    DrawVectorText(Str(StartTime))
    
    PrintN(Str(ElapsedMilliseconds() - StartTime))
    StopVectorDrawing()
  EndIf
  
  If StartDrawing(ScreenOutput())
    If IsImage(#Image)
      DrawAlphaImage(ImageID(#Image), 0, 0, 255)
    EndIf
    StopDrawing()
  EndIf
  
  FlipBuffers()
  
ForEver

End
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten