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

Anonymous

unregistriert

1

01.03.2005, 17:54

Render-Problem

Ich habe zwei Renderfunktionen.
1:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void CBitmapSurface::Render()
{
    g_pD3DDevice->SetMaterial( &Material );
    g_pD3DDevice->SetTexture( 0, g_pTexture );
    g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pD3DDevice->SetIndices(g_pIB);
    g_pD3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1 );
    g_pD3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, lMaxIndexDif, 0, lPrimitiveCount );
}


2:

C-/C++-Quelltext

1
2
3
4
5
6
void CGridSurface::Render()
{
    g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pD3DDevice->SetFVF( D3DFVF_XYZ );
    g_pD3DDevice->DrawPrimitive( D3DPT_LINELIST, 0, (nVertCount));
}


Wenn man beide Render-Funktionen einzeln aufruft, funktionieren diese. Wenn diese Funktionen jedoch hintereinander aufgerufen wird, wird immer mein Fenster geschlossen. (mit return -1) Ich weiß nicht, was die Renderfunktionen ändert, dass es zusammen nicht mehr funktioniert. Kann mir jemand weiter helfen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

01.03.2005, 19:48

Setindices auf null viell?

Anonymous

unregistriert

3

03.03.2005, 18:37

Dies hat leider nichts gebracht. Ich habe der zweiten Renderfunktion jetzt noch einen Normalvektor spendiert:

C-/C++-Quelltext

1
g_pD3DDevice->SetFVF( D3DFVF_XYZ|D3DFVF_NORMAL );


Leider hat dies nichts geändert. Kann es daran liegen, dass keine Texturdaten verwendet werden?

Anonymous

unregistriert

4

03.03.2005, 18:53

Wenn ich die Zeile (in 1):

C-/C++-Quelltext

1
g_pD3DDevice->SetTexture( 0, g_pTexture );


auskommentiere, dann funktioniert es. Kann ich irgendwie die Textur wieder zurücksetzten. Mit

C-/C++-Quelltext

1
g_pD3DDevice->SetTexture( 0, NULL );

habe ich es schon probiert, aber es hat nichts geändert. Kann mit jemand helfen?

Anonymous

unregistriert

5

04.03.2005, 18:50

Ich habe jetzt den Aufruf der zwei Renderfunktionen einfach vertauscht. Dann hat es funktioniert. Hier nochmals im ganzen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void CDraw::Render()
{
    g_pD3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
                         D3DCOLOR_XRGB(0,0,255), -1.0f, 0 );

    g_pD3DDevice->BeginScene();

        GridSurface.Render();
        BitmapSurface.Render();

    g_pD3DDevice->EndScene();

    g_pD3DDevice->Present( NULL, NULL, NULL, NULL );
}


C-/C++-Quelltext

1
2
3
4
5
6
7
void CGridSurface::Render()
{
    g_pD3DDevice->SetMaterial( &Material );
    g_pD3DDevice->SetFVF( D3DFVF_XYZ|D3DFVF_NORMAL );
    g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pD3DDevice->DrawPrimitive( D3DPT_LINELIST, 0, (nVertCount-1));
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
void CBitmapSurface::Render()
{
    g_pD3DDevice->SetMaterial( &Material );
    g_pD3DDevice->SetTexture( 0, g_pTexture );
    g_pD3DDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pD3DDevice->SetIndices(g_pIB);
    g_pD3DDevice->SetFVF( D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1);
    g_pD3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, lMaxIndexDif, 0, lPrimitiveCount );
    g_pD3DDevice->SetIndices( NULL );
}


Weiß jemand, warum es von der Reihenfolge abhängt und kann ich dies irgenwie ändern?

Werbeanzeige