【问题标题】:c++ directx muliti texturesc++ directx多纹理
【发布时间】:2010-10-08 22:01:41
【问题描述】:

如何在一个立方体上设置多个纹理,就像立方体的正面与背面的纹理不同......

我厌倦了使用这些阶段,但它没有用。例如,如果我想做一个骰子,我的顶部是 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);

【问题讨论】:

    标签: c++ visual-c++ winapi directx directx-9


    【解决方案1】:

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

    失败了……你画了 6 次。每个纹理一次。

    如果可以的话,前一种方法是迄今为止最好的方法。使用 DirectX 9,draw call 越少越好 ...

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

    尽管如此,我描述的第一种方法很可能仍会为您提供最佳性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多