Directx9 Oberfläche textur

Ich will meine Backbuffer in meine LPDIRECT3DSURFACE9 und kopieren Sie dann die Oberfläche in meinen IDirect3DTexture9 schließlich verwenden, die textur als mein Objekt der Haut. Ich habe die codes aber erhielt nur schwarze Pixel.

IDirect3DTexture9* texture;
LPDIRECT3DSURFACE9 pd3dsBack = NULL;

void init()//init point
{

    D3DXCreateTexture(g_pd3dDevice, 640, 480, D3DUSAGE_DYNAMIC,
        0, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &texture);

}

void render()//render point
{

    g_pd3dDevice->BeginScene();

    g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
        D3DCOLOR_COLORVALUE(0.0f, 1.0f, 0.0f, 1.0f), 1.0f, 0);

    //my scene (1) 3d objects codes for draw.

    g_pd3dDevice->EndScene();

    //now try to get back-buffer into surface

    g_pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pd3dsBack);


    //i add this Save section to ensure the backbuffer data received complete and work.(it was ok and save complete true picture of Scene(1) ).

    D3DXSaveSurfaceToFileA("BackbufferImage.BMP", D3DXIFF_BMP, pd3dsBack, NULL, NULL);


    //this line put surface into my texture ; if u think this way is false please give me a simple code to fill texture by surface.

    texture->GetSurfaceLevel(0, &pd3dsBack);

    pd3dsBack->Release();//release my surface


                         //scene(2)
    g_pd3dDevice->BeginScene();

    g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
        D3DCOLOR_COLORVALUE(1.0f, 0.0f, 0.0f, 1.0f), 1.0f, 0);

    //now render my scene(2) and useing the texture object for draw it as skin of my 3d     object
    g_pd3dDevice->SetTexture(0, texture);

    g_pd3dDevice->EndScene();


    g_pd3dDevice->Present(NULL, NULL, NULL, NULL);

}
InformationsquelleAutor daniel | 2013-01-11
Schreibe einen Kommentar