2010-10-08 4 views
0

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

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

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

Несоблюдение этого ... вы рисуете 6 раз. Один раз для каждой текстуры.

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

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

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

Смежные вопросы