C ++ DirectX мультити текстуры - PullRequest
       14

C ++ DirectX мультити текстуры

0 голосов
/ 09 октября 2010

Как мне установить несколько текстур на кубе, так как передняя часть куба имеет другую текстуру с обратной стороны ....

Я устал использовать сцены, но это не сработало. например, если бы я хотел сделать кости, то у меня была бы верхняя сторона: 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);

1 Ответ

1 голос
/ 09 октября 2010

Что вы делаете, это создаете текстуру и помещаете 6 граней кости в эту одну текстуру. Затем для каждого лица вы используете ультрафиолетовые лучи, которые соответствуют той части текстуры, на которой вы хотите получить кубик.

В противном случае вы рисуете 6 раз. Один раз для каждой текстуры.

Первый способ, безусловно, лучший способ сделать это, если вы можете. Меньше вызовов отрисовки лучше с DirectX 9 ...

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

Первый метод, который я описал, все же, скорее всего, даст вам лучшую производительность.

...