用D3D纹理贴图显示图片,为啥图片超过7、8张左右画面就停止了?
我先是加载一些图片
if (FAILED(D3DXCreateTextureFromFile(m_pD3DDevice, _T("1.jpg"), &m_pTexture[0])))
{
return FALSE;
}
渲染的时候是:
m_pD3DDevice->SetStreamSource(0, m_pVertices[0], 0, sizeof(Vertex));
m_pD3DDevice->SetTexture(0, m_pTexture[0]);
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
m_pD3DDevice->SetStreamSource(0, m_pVertices[1], 0, sizeof(Vertex));
m_pD3DDevice->SetTexture(0, m_pTexture[1]);
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
m_pD3DDevice->SetStreamSource(0, m_pVertices[2], 0, sizeof(Vertex));
m_pD3DDevice->SetTexture(0, m_pTexture[2]);
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
m_pD3DDevice->SetStreamSource(0, m_pVertices[3], 0, sizeof(Vertex));
m_pD3DDevice->SetTexture(0, m_pTexture[3]);
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
m_pD3DDevice->SetStreamSource(0, m_pVertices[4], 0, sizeof(Vertex));
m_pD3DDevice->SetTexture(0, m_pTexture[4]);
m_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
。。。。。。
当图片多余 7、8 张左右时,画面就死在那里了,不知道为啥?这应该不叫“多重纹理”吧?
我的目的就是在屏幕的不同位置显示这些图片,不知道这种做法对不对,请各位指教。谢谢!
[解决办法]
你可以搞一个2D纹理类的
把主程序里面的Render()要做的事,放到类的Render()里面去
在屏幕的不同位置显示图片,这种方法是对的
但是前面要加个SetRenderState(d3drs_world,&mat)
mat就是用来设图片的位置的
[解决办法]
使用了纹理后要释放资源
m_pTexture[0]->Release();
[解决办法]