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

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

1

10.12.2009, 19:01

[SFML] Spielkarten zeichnen

Hallo,

Ich möchte - mit der SFML - die Spielkarte zeichnen.
Diese besteht aus einer 32*32, bzw einer 15*10 Matrix von Rechtecken, bzw. Sprites.

Als ich dann - einfach Brute-Force, eine Schleife hatte (kein Original-Code!)

C-/C++-Quelltext

1
2
3
4
5
6
7
for(int x=0;x<width;x++)
{
     for(int y=0;y<height;y++)
     {
            Spielfeld->Draw(*App,x,y);
     }
}


dann gingen die FPS auf < 12 :!:

Da die Map relativ statisch ist, und sich nur selten verändert, kam ich auf die Idee, sie nur einmal auf ein renderImage zu rendern und sie nur bei bedarf zu aktualisieren. :idea:

Macht das Sinn oder was würdet ihr mir empfehlen?

Danke schon mal im voraus ;)

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

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

10.12.2009, 19:25

Das macht viel Sinn. Einfach auf die Grössen achten, aber sobald du mehr als etwas auf ein Sprite bringst, machst du Fortschritte.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

3

10.12.2009, 19:27

Danke ;)
Wie würde das dann konkret gehen? In der Doku hab ich leider nix über die Klasse RenderImage herausgefunden... Kann mir jemand da einen Link/ Tipp geben?

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

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

10.12.2009, 19:31

Ich habe jetzt noch nie was mit SFML gemacht, aber schau dir mal die Funktion copy von sf::Image an. Das scheint das zu machen, was du willst.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

5

10.12.2009, 19:41

Danke ;)

Werd mal gucken, ob ich es so hinbekomme...

Eigentlich sollte RenderImage von RenderTarget abgeleitet sein, aber die Doku lässt nichts derartiges erkennen...

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

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

6

10.12.2009, 20:29

Benutzt du auch SFML2 aus dem SVN? In SFML1.5 gibt es noch kein Batching und auch keine RenderImages. Kann mir aber nicht vorstellen, dass da die Performance schon so stark runter geht, es sei denn, du hast nen Software OpenGL-Treiber oder hast Programmierfehler gemacht.

Weiterhin finde ich deine Draw Methode merkwürdig. Willst du dem Spielfeld nicht eine Draw-Methode geben, in welcher es sich in einem Rutsch komplett zeichnet?

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

7

10.12.2009, 20:35

Das Spielfeld war da nur eine Struktur^^

Hab das jetzt eh umgebaut...

Aber wenn man 1024 Sprites pro Frame rendern will, kann ich mir vorstellen, dass die Framerate in den Keller geht...

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

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

8

11.12.2009, 10:19

Mit SFML2 sollte das überhaupt kein Problem sein und wenn dein Rechner nicht soooo schlecht ist, dann müsste das auch mit SFML1.5 gehen.

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

9

11.12.2009, 12:40

Zitat von »"drakon"«

Ich habe jetzt noch nie was mit SFML gemacht, aber schau dir mal die Funktion copy von sf::Image an. Das scheint das zu machen, was du willst.


Ja, aber in der Beschreibung steht:

Zitat

This function does a slow pixel copy and should only be used at initialization time

Und da sie in echtzeit passieren soll, geht das nicht...

danke trotzdem ;)

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

10

11.12.2009, 13:26

Ja und? Du lädst ja irgendwann dein Spielfeld (Initialisation Time) und da erstellst du dann halt aus lauter kleinen Tiles dein großes Bild.

Musste ja nicht jedes Frame neu machen

So Far...

Laguna

Werbeanzeige