Seite 1 von 4

wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 13:28
von DenKle
ich will in meinem spiel text transparent anzeigen zb für den highscore oder so...
aber es ruckelt o0

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(800,600,32,"")

CreateSprite(999,8,8)
StartDrawing(SpriteOutput(999))
  Box(0,0,8,8,RGB(0,255,255))
StopDrawing()

LoadFont(123,"Impact",28)

Repeat
  ExamineKeyboard()
  ExamineMouse()
  
  ClearScreen(RGB(50,100,200))
  
  StartDrawing(ScreenOutput())
  DrawingFont(FontID(123))
  DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(100,50,"text text text text text")
    DrawText(100,100,"text text text text text")
    DrawText(100,150,"text text text text text")
    DrawText(100,200,"text text text text text")
    DrawText(100,250,"text text text text text")
    DrawText(100,300,"text text text text text")
    DrawText(100,350,"text text text text text")
    DrawText(100,400,"text text text text text")
    DrawText(100,450,"text text text text text")
    DrawText(100,500,"text text text text text")
  StopDrawing()
  
  DisplaySprite(999,MouseX(),MouseY())
  
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End

Re: warum ist das so langsam & wie gebe ich text schneller aus?

Verfasst: 19.01.2010 13:47
von Kaeru Gaman
warum ist das so langsam
also, bei mir ist das nicht langsam.

- welche PureBasic Version benutzt du?
- welches Grafik-Subsystem hast du eingestellt?
- welches Betriebssystem benutzt du?
- was für eine Grafikkarte hast du?
- CPU und Hauptspeicher ist auch interessant.

wie gebe ich text schneller aus?
grundsätzlich ist die Darstellung von Sprites schneller, also du kannst einen vorhandenen Sprite-Font code
aus dem Code-Archiv oder dem Forum verwenden, oder dir fix selber was schreiben.


aber wie oben gesagt, eigentlich ist das bißchen Drawing nicht sonderlich langsam,
also erst mal rausfinden woran das liegt, sonst dokterst du an der falschen Baustelle herum.

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 13:57
von DenKle
probiert habe ich es mit: PB 4.40 & 4.41rc1, 32 & 64Bit, DirectX9 & 7...
mein PC: Windows7 64Bit, 4GBRAM, Core2Quad 4x2500MHz, Radeon HD4850 1GB


also bei mir kann ich den maus zeiger nicht mehr richtig bewegen

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 14:01
von Kiffi
bei mir (Vista Business 32Bit) läuft's auch zufriedenstellend schnell.
Der Mauszeiger lässt sich flüssig bewegen.

Grüße ... Kiffi

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 14:28
von DenKle
also wenn bei euch der zeiger nicht hargt ist das wohl ein "purebasic+windows7" bezogenes problem...

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 14:41
von WPö
Bei mir flimmert der Text nicht, der Mauszeiger aber ruckelt. Das Programm saugt 99% Rechenzeit, da keine Wartezeit eingebaut ist. Allerdings ist mein System schon etwas betagt: Centrino mit 1,86GHz und 2GB RAM, NVidia Go6800.
Warte doch auf ein Auffrischen des Bildinhalts und eine Veränderung des Textes, um neu zu schreiben.

Gruß - WPo

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 14:51
von Christian+
Bei mir läuft es ohne zu ruckeln mit PB 4.40 (64 Bit und 32 Bit) auf Windows 7 64 Bit. den Text zeigt es aber nur mit DirectX 7 an mit DirectX 9 sehe ich ihn nicht (werde mal schauen ob das Problem in 4.41 rc1 immer noch da ist).

Edit: Nun getestet mit PB 4.41 RC1 64 Bit unter DirectX 7 geht alles bei DirectX 9 sehe ich bei dem Beispiel Code von oben aber weiterhin keinen Text.

mfg Christian+

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 14:55
von Kaeru Gaman
WPo hat geschrieben:Warte doch auf ein Auffrischen des Bildinhalts und eine Veränderung des Textes, um neu zu schreiben.
für eine Fensteroberfläche hättest du recht, aber beim Screen muss in jedem Frame alles wieder dargestellt werden.

@DenKle

Ändere mal die Art der Sync:

Code: Alles auswählen

OpenScreen(800,600,32,"Test",#PB_Screen_SmartSynchronization)
ich hatte vermutet, dass es vielleicht ein DX7+Aero Problem ist, deswegen die Frage nach deinem System.

wir sollten jetzt herausfinden, wo die Gemeinsamkeiten von Deinem und WPo's System liegen, dann kommen wir der Ursache auf die Spur.

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 15:19
von DenKle
geht nicht aber mit

Code: Alles auswählen

OpenScreen(800,600,32,"Test",#PB_Screen_NoSynchronization)
geht es :)

aber nun habe ich ja kein framerate limit mehr deswegen

Code: Alles auswählen

SetFrameRate(60)
aber bei

Code: Alles auswählen

SetFrameRate(30)
geht es wieder nicht was mir eigentlich egal ist weil es ja bei 60 geht was ich wollte aber???

Re: wie gibt man text schnell auf grafik aus?

Verfasst: 19.01.2010 15:24
von Kaeru Gaman
also, timing solltest du eher über nen Timer machen als über SetFrameRate.

mal ein beispiel wie man das beginnen kann:
http://www.purebasic.fr/german/viewtopic.php?t=17400

da die GetTickCount-API die ElapsedMilleseconds zugrundeliegt nicht genau genug ist für schneller als 30FpS, solltest du dir mal die Time-API ansehen.