如何在立方体上设置多个纹理,就像立方体的正面具有不同的纹理一样....
我厌倦了使用这些阶段,但它没有用。例如,如果我想制作一个骰子,那么顶部将是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);
答案 0 :(得分:1)
你要做的是创建一个纹理并将骰子的6个面放入那个纹理中。然后,对于每个面,您使用对应于纹理部分的UV,该纹理具有您想要的骰子面。
失败了......你画了6次。每个纹理一次。
如果可以的话,前一种方法是迄今为止最好的方法。使用DirectX 9可以减少绘制调用...
编辑:实际上,公平地说,还有其他一些方法可以做到。您可以使用体积纹理并将每个模具面放在一个切片中,然后将该切片渲染到多维数据集的面上。或者,您也可以使用立方体纹理并进行设置,以便在您想要的面部上查找纹理。
我描述的第一种方法仍然可能会给你最好的表现。