alles nur schwarz: Probleme mit D3DFVF_DIFFUSE - Was mache ich falsch?



  • Hallo allerseits!

    (Wie einige vielleicht schon wissen:)
    Ich versuche eine MFC Anwendung mit DirectX Fenster zu schreiben.

    Den DirectX Teil habe ich auf der Basis eines Tutorials (C++ aus dem DirectX SDK) quasi schon fertig, es geht jetzt nur noch um die Einbindung in das MFC Projekt.

    Hier ist mein hoffentlich letztes Problem damit:

    Alle Dreiecke werden trotz Farbzuweisung schwarz dargestellt!
    Das überhaupt etwas gerendert wird, merkte ich erst, als ich den Hintergrund von schwarz auf blau setzte.
    Beim builden gibt es keine Fehlermeldung.

    In meinem Projekt auf der Basis des Tutorial funktioniert die Farbe, wie bekomme ich sie auch hier rein?

    Beleuchtung habe ich nicht gesetzt, aber das war bei meinem anderen auf dem Tutorial aufbauenden Projekt auch nicht nötig.

    Die dafür wesentlichen Codeteile:

    Erstellung des Vertex (wie im Tutorial):

    // A structure for our custom vertex type
    struct CUSTOMVERTEX
    {
        FLOAT x, y, z;      // The untransformed, 3D position for the vertex
        DWORD color;        // The vertex color
    };
    
    // Our custom FVF, which describes our custom vertex structure
    #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
    

    Zuweisung der Farbe:

    // Initialize Vertices Pattern
        CUSTOMVERTEX g_Vertices[6*xBloecke*yBloecke]; 
    ....
    //z.B.
    g_Vertices[6 * xBloecke * j + 6* i + 1].color =  0xff00ff00;
    // die Koordinatenzuweisung erfolgt in der gleichen Schleife und funktioniert.
    

    Schreiben des Puffers:

    // Fill the vertex buffer.
        VOID* pVertices;
        if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (void**)&pVertices, 0 ) ) )
            return E_FAIL;
        memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
        g_pVB->Unlock();
    

    (hier relevante) Header:

    #include <d3d9.h>
    #include <d3dx9math.h> //for matrices
    #include <mmsystem.h> //for timeGetTime
    #include <d3d9types.h>
    #pragma warning( disable : 4996 ) // disable deprecated warning 
    // #include <strsafe.h>
    #pragma warning( default : 4996 )
    #pragma comment(lib, "d3d9.lib") // for Direct3DCreate9
    #pragma comment(lib, "d3dx9.lib") // for Direct3DCreate9
    #pragma comment(lib, "dxguid.lib") // for Direct3DCreate9
    #pragma comment(lib, "winmm.lib") //for timeGetTime
    

    Was könnte ich falsch gemacht haben?
    Welche Alternativen gibt es?

    Den Artikel zu D3DFVF und den dort verlinkten zu D3DCOLOR_ARGB habe ich mir durchgelesen, konnte damit aber leider nichts anfangen...

    Danke und Gruß!



  • Probiers mal mit

    pD3DDevice->SetRenderState(D3DRS_LIGHTING, false);



  • mac_bu schrieb:

    Probiers mal mit

    pD3DDevice->SetRenderState(D3DRS_LIGHTING, false);

    Jupp, das in der Render Schleife hat geholen, danke!!! 😃


Anmelden zum Antworten