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

idontknow

unregistriert

1

15.11.2009, 17:18

[SFML] RenderWindow ->Aufruf von Clear/Draw -> extreme

moin!

Ich hab eine Klasse die als Member ein RenderWindow beinhaltet, das das aktuelle Fenster representiert. Das Fenster wird im Konstruktor erstellt, ist ein Pointer und kann lediglich über eine Methode zurückgeliefert werden!

Wenn ich jetzt in der main Funktion die Klasse "erstelle" (welche dann das Fenster erstellt!) und dann über die entsprechende Get-Methode den Fensterpointer erhalte und dort den Aufruf der Methode Draw/Clear durdchführe laggt es extrem. Kommentiere ich den Aufruf raus, passt es einwandfrei ich kann das Fenster ohne Probleme verschieben ect. mit Aufruf geht das nicht!

Ich hab leider keine Ahnung woran das liegen kann, in eineme anderen Test Projekt hab ich das Fenster nicht als Pointer erstellt und hate keine Probleme, aber kann mir nicht vorstellen, dass es daran liegt!

Ich weiß nicht welcher Code wichtig wäre, einfach nachfragen dann kann ich alles reinkopieren :)

mfg

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

15.11.2009, 17:33

Was ist, wenn du das RenderWindow direkt in der main erstellst? - Dann funktionieren die Aufrufe an Clear/Draw ohne Laggs?

Ich habe irgendwie das Gefühl, dass du da gar keine Aufrufe an diese Funktionen machen solltest? Oder vielleicht erzeugst du das Objekt ja ständig neu?

Ich denke ein wenig Code wäre schon hilfreich. -> http://codepad.org/

idontknow

unregistriert

3

15.11.2009, 17:48

1) Objekt, wird nicht neu erzeugt, wenn ich RenderWindow in der Main erstelle habe ich ebenfalls Laggs.

Libs habe ich die selbe gelinkt wie bime porblemlosen Projekt.

Hier mal der Main Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "SFML/Graphics.hpp"
#include "SFML/System.hpp"

#include "CBall.hpp"
#include "CPaddle.hpp"
#include "CGame.hpp"

using namespace sf;

int main()
{
    CGame* MyGame = new CGame(800, 600);

    RenderWindow win(VideoMode(800, 600, 32), "Test");

    Shape bg;
    bg.AddPoint(0,   0,   Color::Cyan);
    bg.AddPoint(799, 0,   Color::Cyan);
    bg.AddPoint(799, 599, Color::Cyan);
    bg.AddPoint(0,   599, Color::Cyan);
    
    while (MyGame->getRenderWindow()->IsOpened())
    {
        sf::Event Event;
        while (MyGame->getRenderWindow()->GetEvent(Event))
        {
        // Window closed

        if (Event.Type == sf::Event::Closed)
        {
            MyGame->getRenderWindow()->Close();
        }

        // Escape key pressed

        if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
        {
            MyGame->getRenderWindow()->Close();
        }
        }
        
        //MyGame->Move(App->GetFrameTime());

        //MyGame->Render();

        //MyGame->getRenderWindow()->Clear(sf::Color::Black);

        //MyGame->getRenderWindow()->Draw(bg);

        
        win.Clear(Color::Cyan);
    }
    
    delete MyGame;

    return 0;
};


Sollte noch mehr relevant sein einfach anfragen bitte :)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

idontknow

unregistriert

5

15.11.2009, 19:11

Aber ohne Display sollte es dann trotzdem nicht laggen?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

15.11.2009, 19:40

wenn ich ein zeiger so oft verwende dann speicher ich ihn in einer eigenen variable anstatt ihn mir immer wieder per get-funktion zu holen. daran kann es aber nicht liegen.

erstellst du ein renderwindow in der main und eins in der klasse CGame? ich sehe hier zwei renderwindows :/

edit: vllt zeigst du uns mal die klasse CGame
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

idontknow

unregistriert

7

15.11.2009, 19:41

das war ein test. um nachzukucken ob es daran liegt, dass renderwindow ein pointer in meienr klasse ist.

wenn ichs aber in der main erstelle hab ich das gleiche problem :(

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

8

15.11.2009, 22:20

Zitat von »"idontknow"«

Aber ohne Display sollte es dann trotzdem nicht laggen?


Also ich benutze hier SFML2 ausm SVN und das mag es nicht, wenn man kein Display aufruft. Wie wäre es mit probieren? ;)

idontknow

unregistriert

9

16.11.2009, 14:14

Zitat von »"K-Bal"«

Zitat von »"idontknow"«

Aber ohne Display sollte es dann trotzdem nicht laggen?


Also ich benutze hier SFML2 ausm SVN und das mag es nicht, wenn man kein Display aufruft. Wie wäre es mit probieren? ;)


Danke, das wars, würd mich nur fragen warum das so ist :(.
Weiß jemand wieso dieser Aufruf so fest in der Lib verankert ist, dass ohne grafisch nichts mehr geht?

mfg

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

16.11.2009, 14:46

ich würd mal sagen der switcht unter anderem den doublebuffer.

http://www.sfml-dev.org/documentation/1.…a0788b310308435

wenn du den befehl zum anzeigen nicht gibst dann wird auch nicht angezeigt. logisch?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige