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

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

11

01.08.2006, 13:26

ich habe mir jetzt ne funktion geschrieben für den ladebalken (version 0.1)

C-/C++-Quelltext

1
tbResult Loading(char* AnzeigeText, tbVector2 Position, tbFont* Schriftart, PDIRECT3DCUBETEXTURE9 Textur, tbColor Farbe);


jetzt habe ich nur das problem das ich nach dem schema arbeite wie in dem buch von david, also mit einer load render... methode.

jetzt würde ich das so aufbauen:

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
tbResult CLevel_1::Load()
{
    tbDirect3D &D3D = tbDirect3D::Instance();
    D3D->BeginScene();
    //------------------------------------------------------------------------------------------

    // Modelle laden


    Loading("Modelle", tbVector2(0.5f,0.5f), g_pFlash_2->LoadFont, NULL, tbColor(1.0f,1.0f,1.0f)); 

    // Tisch

    LevelModel = new tbModel;
    if(LevelModel->Init("Data\\Modelle\\Level_1\\Level.tbm","Data\\Modelle\\Level_1\\")) {BS_LOADERROR("Fehler beim Laden der Modelldatei: Level.tbm");}
    else {BS_LOAD("Modelldatei erfolgreich geladen: Level.tbm");}

    // Schläger

    SchlägerModel = new tbModel;
    if(SchlägerModel->Init("Data\\Modelle\\Level_1\\Paddle.tbm","Data\\Modelle\\Level_1\\")) {BS_LOADERROR("Fehler beim Laden der Modelldatei: Paddle.tbm");}
    else {BS_LOAD("Modelldatei erfolgreich geladen: Paddle.tbm");}

    // Ball

    BallModel = new tbModel;
    if(BallModel->Init("Data\\Modelle\\Level_1\\Ball.tbm","Data\\Modelle\\Level_1\\")) {BS_LOADERROR("Fehler beim Laden der Modelldatei: Ball.tbm");}
    else {BS_LOAD("Modelldatei erfolgreich geladen: Ball.tbm");}

    // Blöcke

    for(DWORD b = 0; b < 4; b++)
    {
        sprintf(acFilename, "Data\\Modelle\\Level_1\\Block%d.tbm", b + 1);
        BlockModel[b] = new tbModel;
        if(BlockModel[b]->Init(acFilename,"Data\\Modelle\\Level_1\\")) BS_LOADERROR("Fehler beim Laden eines Blockmodells!")
        else {BS_LOAD("Modelldatei erfolgreich geladen: Block.tbm");}
    } 

    Loading("Texturen", tbVector2(0.5f,0.5f), g_pFlash_2->LoadFont, NULL, tbColor(1.0f,1.0f,1.0f));


jetzt soll er die texturen laden und das solange anzeigen.

aber irgendwie sehe ich nichts

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

12

01.08.2006, 13:39

rufst du Present irgendwo auf?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

13

01.08.2006, 13:44

ne eigentlich nur
D3D->BeginScene()
.
.
.
.
D3D->EndScene()

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

14

01.08.2006, 13:49

Present() ruft die Tribase schon auf. Wenn man das selbst noch mal macht faengts an zu flimmern, weil mehrere Backbuffer sichtbar werden

Wie lange dauert denn das Laden? Kann mir kaum vorstellen dass es mehr als eine Sekunde ist.. vielleicht gehts einfach nur zu schnell ? ;)
"Have you tried turning it off and on again?"

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

15

01.08.2006, 14:26

gut kann auch sein :D

sind nur 12 datein und alle nicht groß

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

16

01.08.2006, 16:59

Ja, aber ist es nicht so, dass die Nachrichtenschleife während des ganzen Prozesses nur einmal durchlaufen wird?? D.h. Present wird erst ganz am Schluss aufgerufen.
Ich würde eine Funktion machen, die dir nur den Ladebildschirm rendert, und die du nach jedem geladenem Modell neu aufrufst, mit einem neuen Prozentwert...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

17

01.08.2006, 17:31

Black-Panther
Jo, stimmt! Ich schaetz mal normalerweise wird zum Laden ein komplett eigener Thread verwendet, das muesste auch klappen
"Have you tried turning it off and on again?"

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

18

01.08.2006, 17:45

Also ich würd nciht extra einen Thread aufmachen... bringt dor nicht wirklich vorteile... außer längeren ladezeiten ;)
Ab und zu eine spezielle Renderfunktion aufrufen wäre doch bestimmt einfacher, oder?
In dieser renderfunktion wird dann halt auch noch Present aufgerufen... AUSNAHMSWEISE! ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

19

01.08.2006, 18:21

kann mir einer mal das gerüst der funktion zeigen(wie er das meint), weil bei mir klappt das nicht.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

20

02.08.2006, 09:42

ACHTUNG: PSEUDECODE! ^^

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
void RenderProgressBar(const float fPercent)
{
    Vertex aBar[4];
    Vertex aBG[4];

    //Diese 8 Vertize mit infos füllen. BG ist der Hintergrund der immer

    //gerendert werden soll und Bar musst du die Länge ausrechnen

    const float fLength = fMaxLength * fPercent;
    const float fHeight  = 50.f;  //Größe halt definieren


    //Vertize erstellen


    D3D->BeginScene();

    //Beide Arrays rendern mit DrawPrimitiveUP und D3DPT_TRIANGLESTRIP


    D3D->EndScene();
    D3D->Present(NULL, NULL, NULL, NULL);
}

//----------------------------------------------------------//


tbResult Load()
{
    RenderProgressBar(0.f);
    Model->Init(...);
    RenderProgressBar(0.2f);
    Model2->Init(..);
    RenderProgressBar(0.4f);

    //usw...

}


So in etwa könnte es klappen... Garantiere aber für nichts ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige