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

23.09.2004, 15:16

Szene wird bei WM_PAINT gerendert

Wenn ich in den Vollbildmodus gehe passiert gar nichts. Im Fenstermodus blinkt die Szene nur kurz und zwar immer wenn das Fenster die WM_PAINT Nachricht erhält. Wie kann ich das ändern?
Der Code lädt nur eine TBM Datei rendert das Objekt dann.

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

2

23.09.2004, 15:18

Code? Wie soll man dir helfen, wenn man nicht weiß, was du gemacht hast?

Oder könntest du so jemandem helfen: "Mein Programm stürtzt immer ab, ich weiß nicht wieso. Bitte helft mir!" ;)

Was sagt zum Beispiel die Log?
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

3

23.09.2004, 15:26

Post doch mal den Code, wo du den Fehler vermutest.

Anonymous

unregistriert

4

23.09.2004, 15:31

In der Log Datei steht nur das gewöhnliche.
Den Code hab ich aus Kapitel2-Modelle so geändert, dass nur ein Modell rerendert wird.
Hier ist die Renderfunktion:

Quellcode

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
tbResult RenderProc(float fNumSecsPassed)
{
    float           fAspect;
    tbMatrix        mProjection;
    tbMatrix        mCamera;
    tbMatrix        mWorld;
    tbVector3       vCamera;


    // Die Szene beginnen
    tbDirect3D::GetDevice()->BeginScene();

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

    // Projektionsmatrix erstellen und einsetzen
    fAspect = (float)(g_Config.Direct3D.VideoMode.Width) / (float)(g_Config.Direct3D.VideoMode.Height);
    mProjection = tbMatrixProjection(TB_DEG_TO_RAD(90.0f), fAspect, 0.1f, 100.0f);
    tbDirect3D::GetDevice()->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)(&mProjection));

    // Kameramatrix erstellen und einsetzen.
    vCamera = tbVector3(0, 0, sinf(fNumSecsPassed) * 100.0f);
    mCamera = tbMatrixCamera(vCamera, tbVector3(0.0f, 0.0f, 0.0f));
    tbDirect3D::GetDevice()->SetTransform(D3DTS_VIEW, (D3DMATRIX*)(&mCamera));

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

    // Z-Buffer deaktivieren, Dithering aktivieren
    tbDirect3D::SetRS(D3DRS_ZENABLE, FALSE);
    tbDirect3D::SetRS(D3DRS_DITHERENABLE, TRUE);

    // Lighting deaktiviren
    tbDirect3D::SetRS(D3DRS_LIGHTING, FALSE);
    
    
    // ------------------------------------------------------------------

    // Weltmatrix zurücksetzen
    tbDirect3D::GetDevice()->SetTransform(D3DTS_WORLD, (D3DMATRIX*)(&tbMatrixIdentity()));

    tbDirect3D::GetDevice()->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0),1.0f, 0);
    
    // Kugel rendern

    g_pSphere->Render();

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

    // Szene beenden und darstellen
    tbDirect3D::GetDevice()->EndScene();
    tbDirect3D::GetDevice()->Present(NULL, NULL, NULL, NULL);

    return TB_OK;
}
[/cpp]

5

25.09.2004, 15:22

Wie schaut denn deine Nachrichtenschleife aus? Nutzt du GetMessage oder PeekMessage?

Und wieso stellst du Z-Buffering aus? Da können ganz böse Binger passieren.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige