游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3419|回复: 6

求助:关于direct9中调用SetTexture()的问题?

[复制链接]

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2006-5-20 18:03:00 | 显示全部楼层 |阅读模式
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]

2

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2006-5-20 19:35:00 | 显示全部楼层

Re: 求助:关于direct9中调用SetTexture()的问题?

ddrmsdos: 求助:关于direct9中调用SetTexture()的问题?

HRESULT SetTexture(
  DWORD Sampler,
  IDirect3DBaseTexture9 * pTexture
);
在direct9中的sdk中讲到...


有一个更好的建议就是你在渲染前将贴图对应的面排序好,再按照顺序调用。这是比较常用的解决方法。

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
 楼主| 发表于 2006-5-20 19:48:00 | 显示全部楼层

Re:求助:关于direct9中调用SetTexture()的问题?

谢谢楼上的建议!!

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-21 10:56:00 | 显示全部楼层

Re:求助:关于direct9中调用SetTexture()的问题?

这个,我想DX里面应该有优化的,就像C++的delete无视空指针一样
这个函数估计会占用显卡带宽,不知道对不对

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
 楼主| 发表于 2006-5-21 14:52:00 | 显示全部楼层

Re:求助:关于direct9中调用SetTexture()的问题?

我刚刚尝试了一下,我调用SetTexture空循环1000次,一个使用的是ApplyTexture(),另一个是ApplyTexture2(),结果发现还是有差距的,前一个在我电脑上跑50帧左右,后一个是200帧左右.

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-21 18:14:00 | 显示全部楼层

Re:求助:关于direct9中调用SetTexture()的问题?


如果你没说反的话
说明SetTexture已经为你做了很好的优化

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2006-5-23 01:54:00 | 显示全部楼层

Re:求助:关于direct9中调用SetTexture()的问题?

SetTexture已经为你做了很好的优化????这不是优化的问题吧,这只能说明等于判别的效率大于SetTexture(),你看了他的代码了码吗?怎么现在的人都乱说
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 14:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表