Wenn jemand die Frames anders darstellen kann, kann er's verbessern
Performanceproblem wenn sich zwei Sprites überlappen?
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ja is klar, allerdings hätte ich nicht gedacht, dass sich das in der performance so deutlich bemerkbar machen kann...Thalius hat geschrieben:denk mal an DX9Kaeru Gaman hat geschrieben:wau.. auch bei 2D sprites, nich nur bei Sprite3D? O_O"( 2D Sprites sidn da ja auch nix anderes als gemapptes 3D )
jedenfalls nicht bei drei, vier sprites, da müßten es doch schon hunderte sein...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
pureanfänger
- Beiträge: 74
- Registriert: 29.03.2008 15:22
Was mir allerdings aufgefallen ist, dass meine Sprites so Größen wie 234x217 haben. Sollte ich diese jedenfalls 234x234
erstellen oder würde in meinem Bsp. auch 234x218 gehen?
Macht es ein Unterschied, wenn ich PNG's verwende?
Also das mit dem Programm-Code ist so eine Sache, der umfasst mittlerweile ca 5000 Zeilen,
daher habe ich mal versucht nur den Spriteteil schematisch darzustellen:
erstellen oder würde in meinem Bsp. auch 234x218 gehen?
Macht es ein Unterschied, wenn ich PNG's verwende?
Also das mit dem Programm-Code ist so eine Sache, der umfasst mittlerweile ca 5000 Zeilen,
daher habe ich mal versucht nur den Spriteteil schematisch darzustellen:
Code: Alles auswählen
Repeat
ExamineKeyboard() : ExamineMouse()
FlipBuffers(#PB_Screen_WaitSynchronization)
If IsScreenActive()
ClearScreen(RGB(0, 0, 0))
DisplaySprite(#Spielfeld_Background, 0, 0)
DisplayTransparentSprite(Feld_01.l, Feld_01_X.l, Feld_01_Y.l)
DisplayTransparentSprite(Feld_02.l, Feld_02_X.l, Feld_02_Y.l)
DisplayTransparentSprite(Feld_03.l, Feld_03_X.l, Feld_03_Y.l)
DisplayTransparentSprite(Feld_04.l, Feld_04_X.l, Feld_04_Y.l)
DisplayTransparentSprite(Feld_05.l, Feld_05_X.l, Feld_05_Y.l)
DisplayTransparentSprite(Feld_06.l, Feld_06_X.l, Feld_06_Y.l)
DisplayTransparentSprite(Feld_07.l, Feld_07_X.l, Feld_07_Y.l)
DisplayTransparentSprite(Feld_08.l, Feld_08_X.l, Feld_08_Y.l)
DisplayTransparentSprite(Feld_09.l, Feld_09_X.l, Feld_09_Y.l)
DisplayTransparentSprite(Feld_10.l, Feld_10_X.l, Feld_10_Y.l)
DisplayTransparentSprite(Feld_11.l, Feld_11_X.l, Feld_11_Y.l)
DisplayTransparentSprite(Feld_12.l, Feld_12_X.l, Feld_12_Y.l)
DisplayTransparentSprite(Feld_13.l, Feld_13_X.l, Feld_13_Y.l)
DisplayTransparentSprite(Feld_14.l, Feld_14_X.l, Feld_14_Y.l)
DisplayTransparentSprite(Feld_15.l, Feld_15_X.l, Feld_15_Y.l)
DisplayTransparentSprite(Feld_16.l, Feld_16_X.l, Feld_16_Y.l)
DisplayTransparentSprite(Feld_17.l, Feld_17_X.l, Feld_17_Y.l)
DisplayTransparentSprite(Feld_18.l, Feld_18_X.l, Feld_18_Y.l)
DisplayTransparentSprite(Feld_19.l, Feld_19_X.l, Feld_19_Y.l)
DisplayTransparentSprite(Feld_20.l, Feld_20_X.l, Feld_20_Y.l)
DisplayTransparentSprite(Feld_21.l, Feld_21_X.l, Feld_21_Y.l)
DisplayTransparentSprite(Feld_22.l, Feld_22_X.l, Feld_22_Y.l)
DisplayTransparentSprite(Feld_23.l, Feld_23_X.l, Feld_23_Y.l)
DisplayTransparentSprite(Feld_24.l, Feld_24_X.l, Feld_24_Y.l)
DisplayTransparentSprite(Feld_25.l, Feld_25_X.l, Feld_25_Y.l)
DisplayTransparentSprite(Feld_26.l, Feld_26_X.l, Feld_26_Y.l)
DisplayTransparentSprite(Feld_27.l, Feld_27_X.l, Feld_27_Y.l)
Start3D()
DisplaySprite3D(0, 50, 122, Transparency_1.l)
DisplaySprite3D(1, 50, 50, Transparency_2.l)
DisplaySprite3D(2, 1200, 20, Transparency_2.l)
DisplaySprite3D(3, 250, 250, Transparency_2.l)
DisplaySprite3D(4, 250, 450, Transparency_2.l)
Stop3D()
DisplaySprite(5, 400, 342)
DisplaySprite(6, 400, 442)
DisplaySprite(7, 400, 542)
DisplaySprite(8, 400, 642)
Until Exit.b = 1-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also, wenn du was tile-mäßiges machen willst, schau dir mal an wie man eine tile-engine wirklich baut.
http://www.purebasic.fr/german/viewtopi ... 634#116634
... und wenn du auf den n²-Vorteil abzielen willst, mach deine sprites 256x256 groß.
http://www.purebasic.fr/german/viewtopi ... 634#116634
... und wenn du auf den n²-Vorteil abzielen willst, mach deine sprites 256x256 groß.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53
Uff 5000 Zeilen ... ich dachte du bist ein Anfänger 
Ich hab bis Heute keines was über 800 Zeilen hat
Wenn die Felder alle gleich aussehen kannst du diese mehrmals darstellen und musst es nicht immer unter einen neuen namen laden.
Wenn die Felder aus rechtecken bestehen brauchst du auch kein transparentessprite machen. (denke mal das zieht auch leistung)
Was hast du denn für Hardware? Evtl. ist dein Programm einfach zu mächtig für dein Pc
Hm wenn die felder sich nicht bewegen kannst du sie doch sicher auch per for next Schleife an ihre Koordinaten bringen, das wäre kürzer.
Du kannst auch leistung Sparen wenn du dein FlipBuffers(#PB_Screen_WaitSynchronization) durch FlipBuffers(#PB_Screen_NoSynchronization) ersetzt (aber am besten nur wenn sich nichts bewegt :P )
Wenn ich was Falsches von mir gegeben hab Sagt es besser
bin ja auch noch nicht der Beste :P
Edit: Ich benutze irgentwie viele Smilys ^^
Gruß Zim
Ich hab bis Heute keines was über 800 Zeilen hat
Wenn die Felder alle gleich aussehen kannst du diese mehrmals darstellen und musst es nicht immer unter einen neuen namen laden.
Wenn die Felder aus rechtecken bestehen brauchst du auch kein transparentessprite machen. (denke mal das zieht auch leistung)
Was hast du denn für Hardware? Evtl. ist dein Programm einfach zu mächtig für dein Pc
Hm wenn die felder sich nicht bewegen kannst du sie doch sicher auch per for next Schleife an ihre Koordinaten bringen, das wäre kürzer.
Du kannst auch leistung Sparen wenn du dein FlipBuffers(#PB_Screen_WaitSynchronization) durch FlipBuffers(#PB_Screen_NoSynchronization) ersetzt (aber am besten nur wenn sich nichts bewegt :P )
Wenn ich was Falsches von mir gegeben hab Sagt es besser
Edit: Ich benutze irgentwie viele Smilys ^^
Gruß Zim
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
- Deluxe0321
- Beiträge: 336
- Registriert: 19.05.2006 00:31
- Kontaktdaten:
Uff 5000 Zeilen ... ich dachte du bist ein Anfänger
Code: Alles auswählen
DisplayTransparentSprite(Feld_01.l, Feld_01_X.l, Feld_01_Y.l)
[...]
DisplayTransparentSprite(Feld_27.l, Feld_27_X.l, Feld_27_Y.l) gruß marv
Ich habe keine Lösung, aber ich bewundere das Problem.
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
"mächtig" würde ich das nicht unbedingt nennen, eher "kacke geschraubt".The_Dark_Zim-.- hat geschrieben:Was hast du denn für Hardware? Evtl. ist dein Programm einfach zu mächtig für dein Pc
man kann jede moderne Maschine in die Knie zwingen, wenn man scheiße programmiert.
klingt böse, is aber so!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
pureanfänger
- Beiträge: 74
- Registriert: 29.03.2008 15:22
- The_Dark_Zim-.-
- Beiträge: 372
- Registriert: 18.03.2008 16:53