//
    // Nachrichten "pumpen" bis der Benutzer das Programm verlassen will
    //
    while (g_Quit == false)
    {
        // Liegen Nachrichten in der Nachrichten-Schlange?
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE)
        {
            // Ja! Dann Standard-Weiterleitung
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
 
        // Unsere Grafik anzeigen
        render();
    }

 

/*--------------------------------------------------------------------------------
 
    Name: render
 
    Description:
        Zeigt die Grafik auf dem Bildschirm an.
 
    Remarks:
        Momentan wird einfach nur der Bildschirm gelöscht.
 
--------------------------------------------------------------------------------*/
void render()
{
    // Den Grünton zum Füllen des Hintergrundes verändern
    g_Green = (g_Green + 1) % 256;
 
    //
    // Den Hintergrund mit einem Grünton füllen
    //
    g_pD3DDevice->Clear
    (
        0, // Anzahl der Rechtecke, die zum Löschen angemeldet werden. Muss 0 sein, wenn der 2. Parameter NULL ist
        NULL, // Zeiger auf Array mit Rechtecken. Bei NULL nimmt Direct3D ein Rechteck für den ganze Bildschirm an
        D3DCLEAR_TARGET, // Einfach nur Hintergrund löschen
        D3DCOLOR_XRGB(0, g_Green, 0), // Hintergrundfarbe angeben
        0.0f, // Füllwert für den ZBuffer (wird momentan nicht benutzt)
        0 // Füllwert für den Stencil-Buffer (wird momentan nicht benutzt)
    );
 
    g_pD3DDevice->BeginScene();
 
    //
    // Momentan wird noch keine eigentliche Grafik gezeichnet
    //
 
    g_pD3DDevice->EndScene();
 
    // Den neu gezeichneten Backbuffer zum Frontbuffer machen und damit anzeigen
    g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}