Hallo
,
ich mach für die Schule grad ein Projekt bei dem ich ein Programm erstelle, dass es mir wie bei virtuellen CD-Roms ermöglicht verschiedene Medientypen darzustellen, darunter auch Videos. Ich hab mich entschieden, das mit der TriBase Engine zu machen. Doch beim abspielen der Vides gibt es ein Problem. Hier die wichtigsten Codeaussschnitte:
|
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
|
//Laden des Videos in die CMedium Klasse
else if(m_iType == TYPE_VIDEO)
{
// Video laden
m_pVideo = new tbVideo();
if(m_pVideo->Init(acFilename) != TB_OK)
{
TB_ERROR("Fehler beim Laden eines
Videos",TB_ERROR);
}
}
// Alles Ok!!
TB_INFO("Video geladen!")
m_bInitialized = true;
return TB_OK;
}
// Rendern des Videos
else if(m_iType == TYPE_VIDEO)
{
//Warten bis Textur freigegeben wird
while(m_pVideo->GetRenderer()->IsTextureLocked
()) {}
tbDirect3D::BeginScene();
tbDirect3D::SetFVF(TITEL_FVF);
tbDirect3D::SetRS(D3DRS_ZENABLE,D3DZB_FALSE);
/*Hier schlägt es fehl*/tbDirect3D::SetTexture(0,m_pVideo->GetRenderer
()->GetTexture());
.....
//Hier noch der WinMain Aufruf
InitAll();
//Test
Test = new CMedium();
Test->acFilename = "Videos\\DerProfi.avi";
Test->m_iType = TYPE_VIDEO;
Test->Load();
Test->m_pVideo->Play();
//Test
|
Beim Debuggen hab ich festgestellt, dass die render-Methode immer beim
GetRenderer->GetTexture() beendet wird. Daraufhin schlägt dann auch die Present() (oben nicht aufgeführt) Methode fehl. Das kann ja nur an einem Texture NullPointer liegen, aber warum tritt dieser auf ??? ??? Die Init Methode schlägt nämlich nicht fehl(Man hört den sound während das Bild schwarz bleibt). Ich hoffe ihr könnt mir helfen. Danke schon mal im voraus!!
Gruß Julian