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

07.12.2004, 21:03

vid im intro???

also hi erstma ^^

ich hab vor ein pc-game zu machen (was ist erstmal unwichtig) und ich scheitere schon beim intro :[

es soll ganz einfach ein video abgespielt werden aber bei mir tut sich nix. in anlehnung an davids
breakanoid hab ich die struktur davon übernommen (heißt move, render, load, unload, exit und init-funktionen)
mit hilfe des video-beispielprogramms aus kap 9 hab ich gedacht das wird kein problem und hab einfach alles übernommen und die
WINMAIN ausm beispiel in die load gepackt...allerdings bleibt mein bildschirm schwarz anstatt dasn vid kommt

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

2

07.12.2004, 21:45

poste doch mal deinen quellcode, denn ohne kann man dir leider nur sehr schwer und bedingt helfen...
ansich dürfte das kein größeres problem darstellen (video abspielen), aber wenn du an solchen sachen scheiterst und eigentlich auch nur den code aus den beispielen übernimmst, solltest du vlt erst einmal ein kleineres projekt starten als gleich ein "pc game" zu schreiben. zB erstmal ein kleines prog was nur ein video abspielt oder so...

3

08.12.2004, 20:48

naja ich scheitere ja nur halb dran ^^

ich denke mal das is einfach die erfahrung und ich würde das auch irgendwie hinbekommen aber ich müsste hald endlos lange suchen und debuggen und und und und (^^) ich denke mal ihr habt den besseren blick und könnt mir da einiges ersparen

PS: code kommt beim nächsten mal ich hab den jetz net "griffbereit"

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

4

08.12.2004, 21:44

geholfen wird dir ja in jeden fall so gut man kann. ohne code ist es wie gesagt nur schwer....

5

09.12.2004, 20:37

aaalso...ich hab schon mal debuggt und er kackt in der move bei g_pVideo->Process das erste mal ab und das zweite mal in der render funktion wenn er auf die entsperrung der vid-textur wartet...

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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//_____________________________________________________________

//Struktur für einen Vertex

#define VERTEX_FVF (D3DFVF_XYZRHW | D3DFVF_TEX1)
struct SVertex
{
    tbVector3   vPosition;
    float       fRHW;
    tbVector2   vTex0;
};

//__________________________________________________________________

//Globale Variablen

tbVideo*    g_pVideo = NULL;        //Video


//__________________________________________________________________

//Initialisiert den Spielzustand

tbResult CIntro::Init()
{
    //Laden

    if(Load()) TB_ERROR("Fehler beim Laden des Spielzustands!", TB_ERROR);

    return TB_OK;
}

//__________________________________________________________________

//Fährt den Spielzustand herunter

tbResult CIntro::Exit()
{
    //Entladen

    Unload();

    return TB_OK;
}

//__________________________________________________________________

//Entlädt den Spielzustand

tbResult CIntro::Unload()
{
    //Alles löschen

    TB_SAFE_DELETE(g_pVideo);
    
    return TB_OK;
}
    
//__________________________________________________________________

//Bewegt den Spielzustand

tbResult CIntro::Move(float fTime)
{
    //Das Video verarbeiten

    g_pVideo->Process();

    //Wenn 'Escape' gedrückt wurde: zum Hauptmenü

    if(g_pbButtons[TB_KEY_ESCAPE])
    {
        tbDelay(100);
        g_pTetris->SetGameState(GS_MAIN_MENU);
    }

    return TB_OK;
}

//__________________________________________________________________

//Rendert den Spielzustand

tbResult CIntro::Render(float fTime)
{
    SVertex aVertex[4];

    //Wenn die Videotextur gerade gesperrt ist: warten bis sie frei ist

    while(g_pVideo->GetRenderer()->IsTextureLocked()) {}

    //Die Szene beginnen

    tbDirect3D::GetDevice()->BeginScene();

    //Vertexformat und Videotextur setzen, Z-Buffer aus

    tbDirect3D::SetFVF(VERTEX_FVF);
    tbDirect3D::SetTexture(0, g_pVideo->GetRenderer()->GetTexture());
    tbDirect3D::SetRS(D3DRS_ZENABLE, D3DZB_FALSE);

    //Die vier Vertizes erstellen 

    //Links unten

    aVertex[0].vPosition = tbVector3(0.0f, tbDirect3D::GetScreenSize().y, 0.5f);
    aVertex[0].fRHW = 1.0f;
    aVertex[0].vTex0 = tbVector2(0.0f, g_pVideo->GetRenderer()->GetBottomRightTex().y);

    //Links oben

    aVertex[1].vPosition = tbVector3(0.0f, 0.0f, 0.0f);
    aVertex[1].fRHW = 1.0f;
    aVertex[1].vTex0 = tbVector2(0.0f, 0.0f);

    //Rechts unten

    aVertex[2].vPosition = tbVector3(tbDirect3D::GetScreenSize().x, tbDirect3D::GetScreenSize().y, 0.5f);
    aVertex[2].fRHW = 1.0f;
    aVertex[2].vTex0 = g_pVideo->GetRenderer()->GetBottomRightTex();

    //Rechts oben

    aVertex[3].vPosition = tbVector3(tbDirect3D::GetScreenSize().x, 0.0f, 0.5f);
    aVertex[3].fRHW = 1.0f;
    aVertex[3].vTex0 = tbVector2(g_pVideo->GetRenderer()->GetBottomRightTex().x, 0.0f);

    //Als Dreiecksfolge zeichnen

    tbDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SVertex));

    //Szene beenden und darstellen

    tbDirect3D::GetDevice()->EndScene();
    tbDirect3D::GetDevice()->Present(NULL, NULL, NULL, NULL);

    return TB_OK;
}

//__________________________________________________________________

//Lädt den Spielzustand

tbResult CIntro::Load()
{
    //Video laden

    g_pVideo = new tbVideo;
    if(g_pVideo->Init("Akira Class Starship.avi"))
    {
        MessageBox(NULL, "Fehler beim Laden des Videos!", "Fehler",
                   MB_OK | MB_ICONEXCLAMATION);
        Unload();
        return TB_ERROR;
    }

    //Video mit Looping abspielen

    g_pVideo->Play(TRUE);

    //Aufräumen

    Unload();

    return TB_OK;

}

//________________________________________________________________________

6

10.12.2004, 16:32

Zitat

ich denke mal das is einfach die erfahrung und ich würde das auch irgendwie hinbekommen aber ich müsste hald endlos lange suchen und debuggen und und und und (^^) ich denke mal ihr habt den besseren blick und könnt mir da einiges ersparen

Wenn du schon selbst keine Lust hast deinen Code zu debuggen, wieso glaubst du sollten wir dir Helfen? Wir haben au Stunden daran gesessen und gesucht, bis wir die Fehler gefunden haben. An manchen Fehlern sitzt man sogar Tage. Das ist halt so und wenn man kein Bock darauf hat, hast das falsche Hobby.

Und eben weil hier viele mit Erfahrung sind, wissen sie auch das man nur dann Erfahrungen machen kann, wenn man sich auch selbst auf die Suche nach dem Fehler macht.


Also...hier aber dennoch ein paar Tips:
Culling-Mode prüfen
ist das Licht aus?
Liefert eine Methode einen Fehlerwert zurück?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

7

10.12.2004, 21:00

-.-

so war das ja auch nicht gemeint...ich hab das ja erst gepostet nach dem ich schon min. ne stunde gesucht hab und ich hab gestern und heute auch debuggt und den krempel umgestellt...ich werde auch versuchen mehr mit dem logging-system zu arbeiten um den fehler zu finden aber wie gesacht...ich code noch net sehr lange und hab schon viele projekte wegen sowas abgebrochen weil ich alleine halt nicht weiterkomme und wenn mir dochmal jemand hilft dann is das meistens irgendwas wo ich in 10 jahren net drauf komme...

außerdem zwingt dich keiner mir zu helfen aber ich wär dir dankbar und deine tipps probier ich auch gleich aus :]

8

11.12.2004, 19:02

mann kann sich schon lange über nen nullzeiger wundern wenn in der load-methode nochmal unload() aufgerufen wird -.-

aber k andere frage: wenn ich das vid im vollbild abspielen lasse ruckelt das wie die sau und flimmert so komisch...is aber auch beim beispielprogramm 9 so...liegt das an meinem pc oder doch am code?

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

9

11.12.2004, 19:35

schau dir mal den thread an:
https://www.spieleprogrammierer.de/index.php?option=com_forum&Itemid=43&page=viewtopic&t=2701

welche version der engine benutzt du? 1. oder 2. auflage? directx version?

10

11.12.2004, 19:40

Das Ruckelt wohl bei allen.

Das Problem ist der enorme Rechenaufwand für eine Fullscreendarstellung. Mach das mal in einem Fenster. Dann ruckelt das nicht mehr.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige