c++ directx множество текстури

Как мога да задам повече от една текстура на куб, тъй като предната част на куба има различна текстура от задната част....

Изморих се да използвам етапите, но не се получи. например, ако искам да направя зар, ще имам горна част ще бъде 1 страна ще бъде 2.............

D3DXCreateTextureFromFile(d3ddev,   //Direct3D Device
                                _T("image.png"),       //File Name
                                &g_texture);    //Texture handle

    d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE);    // turn off the 3D lighting
    d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);    // turn off culling
    d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE);    // turn on the z-buffer
 d3ddev->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);   //Ignored

    d3ddev->SetTexture(1,g_texture);

 D3DXCreateTextureFromFile(d3ddev,   //Direct3D Device
                                _T("images.png"),       //File Name
                                &texture2);    //Texture handle



    d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE);    // turn off the 3D lighting
    d3ddev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);    // turn off culling
    d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE);    // turn on the z-buffer
 d3ddev->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
    d3ddev->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);   //Ignored

 d3ddev->SetTexture(0, texture2);

person Ramilol    schedule 08.10.2010    source източник


Отговори (1)


Това, което правите, е да създадете текстура и да поставите 6-те лица на зара в тази текстура. След това за всяко лице използвате UV, които съответстват на частта от текстурата, върху която има желаната от вас страна на зара.

Ако не успеете ... вие равенствате 6 пъти. Веднъж за всяка текстура.

Първият метод е най-добрият начин да го направите, ако можете. По-малко повиквания за изтегляне е по-добре с DirectX 9 ...

Редактиране: Всъщност, честно казано, има няколко други начина, по които можете да го направите. Можете да използвате обемна текстура и да поставите всяка лицева страна на матрицата в един срез и след това да изобразите този срез върху лицето на куба. Или можете също да използвате кубична текстура и да я настроите така, че текстурата да изглежда нагоре да се появява върху лицето, което искате.

Първият метод, който описах, все пак най-вероятно ще ви даде най-добра производителност.

person Goz    schedule 08.10.2010