首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

用D3D纹理贴图显示图片,为啥图片超过7、8张左右画面就停止了?解决方案

2012-03-31 
用D3D纹理贴图显示图片,为啥图片超过7、8张左右画面就停止了?我先是加载一些图片if (FAILED(D3DXCreateText

用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();
[解决办法]

探讨
已解决。
可能是图片太大的问题,加载的时候用 D3DXCreateTextureFromFileEx 制定一些参数就 OK 了。

楼上两位答的根本不切题。但还是谢谢了。

[解决办法]
看来楼主的显卡不是很强劲
[解决办法]
...这个..呵呵
[解决办法]
别人指出了你的问题 你还这么说 真是不知好人心 而且这个问题你确实存在 

探讨

使用了纹理后要释放资源

m_pTexture[0]->Release();

[解决办法]
他们给出的答案在特定的情况下都能造成“画面停止”这个现象。
他们之所以那么回答,部分原因是你给出的信息不全,无法让他们更准确的定位问题——题目问的不清楚,主题的范围就越大,切题的概率也就降低了。

另外还有就是,很多其他遇到类似问题的人,的确都是犯了那样的错误,在对你的了解不够的前提下,他们也把你当成那种情况处理了。

所以我觉得,他们的行为没有什么不自然的情况。

不过不管怎么说,他们也不是存心小看你,所以相互理解一下吧,消消火,呵呵
[解决办法]
哎,前两个回复明显是“回贴不看贴”型的。

热点排行