Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;directx muliti纹理_C++_Visual C++_Winapi_Directx_Directx 9 - Fatal编程技术网

C++ c++;directx muliti纹理

C++ c++;directx muliti纹理,c++,visual-c++,winapi,directx,directx-9,C++,Visual C++,Winapi,Directx,Directx 9,我如何在一个立方体上设置多个纹理,就像立方体的正面和背面有不同的纹理一样 我很想用舞台,但没用。例如,如果我想做一个骰子,我会让顶部是1边是2边 D3DXCreateTextureFromFile(d3ddev, //Direct3D Device _T("image.png"), //File Name &g_texture); //Te

我如何在一个立方体上设置多个纹理,就像立方体的正面和背面有不同的纹理一样

我很想用舞台,但没用。例如,如果我想做一个骰子,我会让顶部是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);

你要做的是创建一个纹理,并将骰子的6个面放入该纹理中。然后,对每个面使用UV,该UV对应于纹理中具有所需骰子面的部分

如果不行。。。你画了6次。每个纹理一次

如果可以的话,前一种方法是目前为止最好的方法。使用DirectX 9时,绘制调用越少越好

编辑:事实上,公平地说,你还有其他几种方法可以做到这一点。可以使用体积纹理,将每个模具面放在一个切片中,然后将该切片渲染到立方体的面上。或者,您也可以使用立方体纹理并对其进行设置,以便纹理查找发生在您想要的面上

不过,我描述的第一种方法很可能仍能提供最佳性能