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

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

1

16.06.2008, 18:43

Logbuch funzt mit SpriteEngine nicht?

Hey,
ich hab mal wieder ein ganz blödes Problem! Ich wollte jetzt für mein neues Spiel zum ersten Mal sprites verwenden. Das klappt dummer weise nicht :( das Prob ist, das mein Programm ganz normal läuft und erst wenn ich es zu mache kommt die Fehler meldung "... hat Problem festgestellt und muss beendet werden!" wenn ich dann in die LogBuch datei gucke hört sie einfach na Tastatur initialisiert auf. Wenn ich jetzt die Zeilen in denen meine Sprite Engine erstellt wird auskommentiere funzt wieder alles ganz normal wie kann das sein?

Also ich initialisiere die SpriteEngine 1:1 so wie in galactica (hab das nachdem es nich gefunzt hat einfach mal kopiert) also so:

C-/C++-Quelltext

1
2
m_pSpriteEngine = new tbSpriteEngine;
m_pSpriteEngine->Init(15000);

ich kann jetzt wirklich nicht endecken wo da der Fehler ist! und es muss ja eig. an diesen zwei Zeilen liegen.

Was auch noch komisch ist ist, dass wenn ich mit dem Debugger drüber gehe läuft er ganz normal schritt für schritt durch und genau an dieser Stelle springt er einfach an das ende der Methode und sagt bei der SpriteEngine error expression cannot be evaluated

kommt mir alles sehr spanisch vor vllt. kann jemand licht für mich ins dunkle bringen

thx schonmal

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

16.06.2008, 18:46

Also an diesem bisschen kann man den Fehler ja nicht finden. ;)

Die einzige Möglichkeit ist, dass 15000 kein gültiger Wert ist.
Ansonsten musst du ein wenig mehr posten.

3

16.06.2008, 19:10

Zitat

und erst wenn ich es zu mache kommt die Fehler meldung "... hat Problem festgestellt und muss beendet werden!"

zeig mal was passiert (in code) wenn du das programm schließst

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

4

16.06.2008, 19:27

@drakon mein Prob ist ja das ich keine ahnung habe wo genau ein anderer Fehler ist ich weiß nur das diese beiden Zeilen den absturz verursachen

@dafaultplayer: tja ich schließe das Prog im mom mit alt+f4 also da gibts im code ncihts zu sehen^^

hier mal die methode in der es passiert müsste:

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
tbResult CGame::Init() {
    //Modelle laden

    pShip.Model = new tbModel;
    if(pShip.Model->Init("Data\\Raumschiff1.tbm")) {}

    ArenaModel = new tbModel;
    if(ArenaModel->Init("Data\\arenaneu.tbm")) {}

    cShip.Model = new tbModel;
    cShip.Model->Init("Data\\raumschiff2.tbm");

    Ball.Model = new tbModel;
    Ball.Model->Init("Data\\kugel.tbm");

    Rocketmodel = new tbModel;
    Rocketmodel->Init("Data\\rocket.tbm");

    //Balldaten laden

    SetBall();
        
    //Schiffdaten laden

    CreatShips();   

    //Raketendaten laden

    CreatRockets();

    //SpriteEngine initialisieren

    SpriteTex = tbTextureManager::Instance().GetTexture("Data\\Sprites.bmp", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1);
    if(SpriteTex == NULL) TB_ERROR("Fehler beim Laden der Sprites-Textur!", TB_ERROR);


    SpriteEng = new tbSpriteEngine;
    SpriteEng->Init(16000);

    SpriteEf = new tbEffect;
    SpriteEf->Init("Data\\spriteef.fx");
    SpriteEf->GetEffect()->SetTexture("Texture", SpriteTex);

    SpriteEng->CreateSpriteType(0, tbVector2(0.0f, 0.25f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(1, tbVector2(0.0f, 0.5f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(2, tbVector2(0.0f, 0.75f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(3, tbVector2(0.0f, 1.0f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(4, tbVector2(0.25f, 0.25f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(5, tbVector2(0.25f, 0.5f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(6, tbVector2(0.25f, 0.75f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(7, tbVector2(0.25f, 1.0f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(8, tbVector2(0.5f, 0.25f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(9, tbVector2(0.5f, 0.5f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(10, tbVector2(0.5f, 0.75f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(11, tbVector2(0.5f, 1.0f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(12, tbVector2(0.75f, 0.25f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(13, tbVector2(0.75f, 0.5f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(14, tbVector2(0.75f, 0.75f), tbVector2(0.25f, 0.25f));
    SpriteEng->CreateSpriteType(15, tbVector2(0.75f, 1.0f), tbVector2(0.25f, 0.25f));
    
    //particalsystem initialisieren

    Particle = new tbParticleSystem;
    Particle->Init(15000);
    

    return TB_OK;
}


weiß nich ob euch das weiterhilft aber ich wüsste wirklich nicht was ich noch posten soll was euch was bringt! ich bin da völlig überfragt :shock:

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

16.06.2008, 19:46

Spring mit dem Debugger mal in die Funktion. Oder fliegt er dir bereits beim new um die Ohren?

Zeig mal Init. (Sicher dass 15000 ein gültiger Wert ist? - Ist das nicht vlt. zu Gross?)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

6

16.06.2008, 19:55

15.000 ist nicht zu hoch. die funktion erwartet eine DWORD. also kann er noch ein wenig höher gehen. in der klasse selbst wird der wert auch als DWORD gespeichert.

7

16.06.2008, 20:20

Zitat

@dafaultplayer: tja ich schließe das Prog im mom mit alt+f4 also da gibts im code ncihts zu sehen^^


das heißt du hast keine Exit()-Funktion wie in den Beispielspielen?

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

8

17.06.2008, 14:23

richtig!!

ich hab jetzt nochmal ein bisschen probiert und jetzt funzt es warum weiß ich nicht aber es läuft jetzt also vielen Dank für euer Bemühen!

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

9

17.06.2008, 14:31

immer wieder gerne ;)

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

10

17.06.2008, 15:04

tja jetzt ist zwar dieses Prob weg aber leider heißt das anscheinend noch lange nicht, dass die Sprites auch so gerendert werden wie ich es gerne hätte also ich mom funzt garnichts :(
hier im Forum wurde das ja schon öfter besprochen aber da hieß es dann immer iwann ah jetzt hab ichs selbst :shock:

also meinen code hab ich ja oben schon gepostet hier ist jetzt noch der ausschnitt der Renderfunktion:

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
    for(int i = 0; i < 20; i++) {
SpriteEng->Begin(Kamera, Kamerapos);

        SpriteEng->AddSprite(0, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(1, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(2, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(3, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(4, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(5, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(6, Rocket[i].Pos  - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(7, Rocket[i].Pos  - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(8, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(9, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(10, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(11, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(12, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(13, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(14, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        SpriteEng->AddSprite(15, Rocket[i].Pos - tbVector3(0.0f, 0.0f, 30.0f), tbColor(1.0f), tbVector2(5.0f));
        Particle->AddParticle(1.0f, 0.0f, 15.0f, Rocket[i].Pos, tbVector3(0.0f));
        Particle->AddToSpriteEngine(SpriteEng);
        
        
        if(Rocket[i].bExplode) {
            SpriteEf->Begin();
            SpriteEf->Pass(0);
            D3D.SetTransform(D3DTS_WORLD, tbMatrixIdentity());
            SpriteEng->Render(0, 15);
            SpriteEf->End();
            SpriteEng->End(); 
            //tbWriteToLog("Sprite rendern!");

            
        }
    }


das müsste doch eig. klappen! vllt. könnt ihr mir ja wieder helfen
vielen Dank schonmal jetzt!

Werbeanzeige