Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

31

26.06.2012, 19:49

Aber wenn in seiner Tilemap jedes Tile auf jeden Fall auch ein Sprite ist?

Und wieso sollte das so sein, dass ein Tile ein Sprite ist und nicht einfach nur ein Sprite hat/verwendet!?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

32

26.06.2012, 20:25

Tja das kommt dann ganz auf seine Tilemap an ^^

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

33

26.06.2012, 23:07

Wie gesagt, es ergibt keinen Sinn, jedes Tile einzeln als Sprite zu rendern (daher auch die flotte Geschwindigkeit). OpenGL ist auf Texturen ausgelegt. Wenn man die Tilemap in eine Textur schreibt, muss man nur eine Textur zeichnen. Dieser Ansatz ist schneller, solange sich nicht in jedem Frame die komplette Tilemap ändert (was nicht zu empfehlen ist :D )

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

34

26.06.2012, 23:08

Naja, aber alle Sprites auf einmal rendern wär noch effizienter ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

35

27.06.2012, 12:22

OpenGL ist auf Texturen ausgelegt


Wie meinst du das?
@D13_Dreinig

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

36

27.06.2012, 17:56

Mmh, war doof ausgedrückt. Es ist viel schneller, eine Textur zu zeichen, als 50x50 (auch wenn die Anzahl an Pixeln gleich ist). Wenn man das komplette Spielfeld in eine Textur schreibt, hat man zwar zusätzlichen Speicheraufwand, allerdings gewinnt man so viel Geschwindigkeit dazu, dass alles andere verschmerzbar ist.
@dot: ich denke nicht, dass das schneller ist. Erst alle Tiles rendern, die Textur 1 haben, dann alle mit Textur 2 etc? Näh, das macht wohl (in SFML) kaum einen Unterschied; höchstens die Anzahl der Textursets wird erhöht. Allerdings hatte ich bei den ersten versuchen mit Tilemaps (in SFML 1.6, ohne RenderTextures) nicht einmal Texturen auf den Tiles, sondern einfach weiße Farbe. War trotzdem saulahm. Ein anderer Vorteil davon, alles in eine Textur zu rendern, ist dass man sie als ganzes Modifizieren (rotieren, verzerren, shadereffekte etc) kann, ohne viel arbeit und performanceverlust.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

37

27.06.2012, 19:03

Hey ,
also ich hab jetzt so einiges gelesen und war der Meinung das die Idee mit dem :"Nur die Sprites zeichnen die sichtbar sind." wäre
garnicht mal so dumm.
Also setzte ich mich vor mein Rechner und werkelte rum und hab erstmal eine Tilemap gemacht die genau mein Bildschirm
ausfüllt um zu sehen mit wie viel FPS sie den läuft,
hier die Werte:

const static int map_hoehe = 28;
const static int map_breite = 16;
const static unsigned int tile_hoehe = 50;
const static unsigned int tile_breite= 50;

FPS: 22

Das heißt selbst wenn ich nur das render was zu sehen ist, ist die FPS miserabel und das bei "nur" ~400 Sprites.
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

38

27.06.2012, 19:04

da mein Beitrag scheinbar untergegangen ist:
benötigt man die Sprites zwingend oder könnte man die Images auch direkt zeichnen?
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

39

27.06.2012, 19:13

Ich weiß ja nicht wie SFML rendert, aber wenn jedes mal der gesamt Renderkontext neu gesetzt wird... (glEnable(blub), Shader, Textur binden, ...).
Vielleicht würde es für diese Aufgabe Sinn machen alles direkt in OpenGL zu schreiben was die Tilemap betrifft. Aber ich weiß jetzt nicht wie "kompatibel" das ist.

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

40

27.06.2012, 19:22


da mein Beitrag scheinbar untergegangen ist:
benötigt man die Sprites zwingend oder könnte man die Images auch direkt zeichnen?
soweit ich weis muss man, um Sachen zu rendern von Drawable Object erben und das macht die Image klasse nicht sondern nur die Sprites.


@Threadersteller: ist es auch so lahm im Release Modus, da sfml gerne im Debug Modus bruuutal langsam ist? (damit habe ich auch schon Erfahrung gemacht :D ), ansonsten würd ich dir einfach raten zu sfml 2.0 zu wechseln, da würden dir 400 Sprites keine Probleme bereiten.
New Project: Operation CityRacer

Werbeanzeige