|
|
HRESULT SetTexture(
DWORD Sampler,
IDirect3DBaseTexture9 * pTexture
);
在direct9中的sdk中讲到频繁调用SetTexture会影响效率的。
但是如果我频繁的调用SetTexture函数但并不改变纹理pTexture的值,也就是只是对一个纹理多次使用这个函数,会不会效率很差。
也就是说:
void ApplyTexture(IDirect3DBaseTexture9 *pTexture)
{
if(pPrevTexture==pTexture) //pPrevTexture为前一次调用的纹理
return;
else
{
m_d3d->SetTexture(0,pTexture); //m_d3d为有效的 IDirect3DDevice9 *指针
pPrevTexture=pTexture;
}
}
void ApplyTexture2(IDirect3DBaseTexture9 *pTexture)
{
m_d3d->SetTexture(0,pTexture);
}
如果有一个循环:
pPrevTexture=0;
for(int i=0;i<10000;++i)
{
ApplyTexture(pTexture); //pTexture指向一个有效的纹理,且不会被改变
func();//......一些其他函数.......
}
同时我的纹理pTexture不会改变成其他的值
那么用ApplyTexture只会调用一次SetTexture(),但是如果将其换成ApplyTexture2函数每次都会调用SetTexture(),我想知道那个ApplyTexture2效率会不会比SetTexture要低很多? [em24] |
|