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

1

12.10.2011, 12:25

SPARK & SFML kein Fenster?

Hallo,

ich versuche gerade mich mit SPARK anzufreunden, jedoch habe ich schon mit dem ersten Problem zu kämpfen...
Undzwar möchte ich ganz einfach ein bisschien rum testen um das ganze mehr zu verstehen, deswegen habe ich versucht
ein kleinen Partikel effekt mit Hilfe des ersten und zweiten Tutorials zu machen, aber leider öffnet sich ständig
nur die Konsole, das Fenster bleibt geschlossen, erst wenn ich alles was mit SPARK zu tun hat auskomentiere
öffnet sich das Fenster, nicht mal das Cout zu begin der Main Funktion wird ausgegeben...
So sieht der Code aus:

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <SPK.h>
#include <SPK_SFML.h>
#include <iostream>

//Use namespace 
using namespace std;

//Main
int main()
{
    //Wird in der Konsole NICHT ausgegeben
    cout << "cout" << endl;

    //App
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SPARK Test");

    //Event
    sf::Event Event;

    //Create Model
    SPK::Model *Model = SPK::Model::create(SPK::FLAG_BLUE | SPK::FLAG_GREEN | SPK::FLAG_BLUE | SPK::FLAG_GREEN, 
                                           SPK::FLAG_ALPHA,
                                           SPK::FLAG_RED  | SPK::FLAG_GREEN | SPK::FLAG_BLUE);

    //Set Parameter
    Model->setParam(SPK::PARAM_BLUE, 0.2f, 0.5f);

    //Set Lifetime
    Model->setLifeTime(1.0f, 2.0f);

    //Zone where the Particles are
    SPK::Point *Point = SPK::Point::create(SPK::Vector3D(400, 300));

    //The Emitter
    SPK::RandomEmitter *Emitter = SPK::RandomEmitter::create();

    //Set Zone
    Emitter->setZone(Point);

    //Set Force
    Emitter->setForce(2.0f, 2.2f);

    //Set Tank
    Emitter->setTank(300);

    //Create our SFML Renderer
    SPK::SFML::SFMLPointRenderer *Renderer = SPK::SFML::SFMLPointRenderer::create();

    //Set Type
    Renderer->setType(SPK::POINT_SPRITE);

    //Set Size
    Renderer->setSize(0.1f);

    //Set BlendMode
    Renderer->setBlendMode(sf::Blend::Add);

    //Create a Group
    SPK::Group *Group = SPK::Group::create();

    //Create
    Group->create(Model, 500);

    //Set Emitter for the Group
    Group->addEmitter(Emitter);
    
    //Set Renderer
    Group->setRenderer(Renderer);

    //Set Gravity
    Group->setGravity(SPK::Vector3D(0.0f, -1.0f, 0.0f));

    //Set Friction
    Group->setFriction(2.0f);

    //Create SFML System
    SPK::SFML::SFMLSystem *System = SPK::SFML::SFMLSystem::create();

    //Add Group
    System->addGroup(Group);

    //Set Render Target
    System->setRenderTarget(&App);

    //Set Shared
    Model->setShared(true);
    Renderer->setShared(true);

    //Loop
    while(App.IsOpened())
    {
        while(App.GetEvent(Event))
        {
            if(Event.Type == sf::Event::Closed)
            {
                App.Close();
            }
        }

        //Update System
        System->update(0.001f);

        //Clear
        App.Clear();

        //Draw
        System->render();

        //Display
        App.Display();
    }

    //Return
    return EXIT_SUCCESS;
}

Ich hab leider auch keinerlei vermutung woran es liegen könnte...
Trotzdem hoffe ich auch Hilfe und bin schon im Voraus dankbar für jede Antwort. :)

2

12.10.2011, 16:24

Mhhh... ich hab das Problem leider immer noch nicht gelöst... noch nichtmal der debugger kann helfen...
Ich habe gerade von oben nach unten und von unten nach oben alles stück für stück auskomentiert, zwar kommt
jetzt das Fenster nur ist es so wie es jetzt ist sinnlos:

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <SPK.h>
#include <SPK_SFML.h>
#include <iostream>

//Use namespace 
using namespace std;

//Main
int main()
{
    cout << "cout" << endl;

    //App
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SPARK Test");

    //Event
    sf::Event Event;

    //Create Model
    SPK::Model *Model = SPK::Model::create(SPK::FLAG_BLUE | SPK::FLAG_GREEN | SPK::FLAG_BLUE | SPK::FLAG_GREEN, 
                                           SPK::FLAG_ALPHA,
                                           SPK::FLAG_RED  | SPK::FLAG_GREEN | SPK::FLAG_BLUE);

    //Set Parameter
    Model->setParam(SPK::PARAM_BLUE, 0.2f, 0.5f);

    //Set Lifetime
    Model->setLifeTime(1.0f, 2.0f);

    //Zone where the Particles are
    SPK::Point *Point = SPK::Point::create(SPK::Vector3D(400, 300));

    //The Emitter
    SPK::RandomEmitter *Emitter = SPK::RandomEmitter::create();

    //Set Zone
    Emitter->setZone(Point);

    //Set Force
    Emitter->setForce(2.0f, 2.2f);

    //Set Tank
    Emitter->setTank(300);

    //Create our SFML Renderer
    SPK::SFML::SFMLRenderer *Renderer;

    //Set Type
    //Renderer->setType(SPK::POINT_SPRITE);

    //Set Size
    //Renderer->setSize(0.1f);

    //Set BlendMode
    Renderer->setBlendMode(sf::Blend::Add);

    //Create a Group
    //SPK::Group *Group = SPK::Group::create(Model, 500);

    //Create
    //Group->create(Model, 500);

    //Set Emitter for the Group
    //Group->addEmitter(Emitter);
    
    //Set Renderer
    //Group->setRenderer(Renderer);

    //Set Gravity
    //Group->setGravity(SPK::Vector3D(0.0f, -1.0f, 0.0f));

    //Set Friction
    //Group->setFriction(2.0f);

    //Create SFML System
    //SPK::SFML::SFMLSystem *System = SPK::SFML::SFMLSystem::create();

    //Add Group
    //System->addGroup(Group);

    ////Set Render Target
    //System->setRenderTarget(&App);

    ////Set Shared
    Model->setShared(true);
    Renderer->setShared(true);

    //Loop
    while(App.IsOpened())
    {
        while(App.GetEvent(Event))
        {
            if(Event.Type == sf::Event::Closed)
            {
                App.Close();
            }
        }

        //Update System
        //System->update(0.001f);

        //Clear
        App.Clear();

        //Draw
        //System->render();

        //Display
        App.Display();
    }

    //Return
    return EXIT_SUCCESS;
}

Zwar öffnet sich jetzt wie gesagt das Fenster jedoch nützt mir das relativ wenig wenn ich weder ein Group, System oder ein SFMLLineRenderer/SFMLPointRenderer (...) Objekt erstellen kann,
weil wenn ich eines dieser Objekte erstelle öffnet sich das Fenster wieder nicht mehr und es bleibt bei einer Konsole. Laut debugger wird kein Stück Code ausgeführt (Wenn ich eines der oben genannten Objekte erstelle)
und da nicht mal die Ausgabe mit Cout erfolgt wirds wohl stimmen... irgendwie verwirrt mich das Problem stark und ich weiß auch nicht woran es liegt...

Ich benutze SFML 1.6 und SPARK 1.5.5...

3

13.10.2011, 09:19

Problem gelöst, hab einfach die Libary für Microsoft Visual 2010 kompilliert und siehe da es funktioniert... :pinch:

Werbeanzeige