游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2314|回复: 9

往Effect里传纹理的问题

[复制链接]

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
发表于 2005-1-24 12:08:00 | 显示全部楼层 |阅读模式
看DX SDK里的说明,好像需要在m_pEffect->SetTexture(TextureHandle, m_pTexture)后要SAFE_RELEASE(m_pTexture)(因为RefCount+1)!
这里有个问题!
如果需要多次向Effect里传同一个纹理,那么SAFE_RELEASE里把m_pTexture设为NULL是怎么回事?
如果不用SAFE_RELEASE,仅仅使用m_pTexture->Release(),那么好像不是把计数器-1,而是真的把纹理释放掉了!因为当我下一次调用m_pEffect->SetTexture(TextureHandle, m_pTexture)时程序崩溃!
如果我什么都不管,不去做任何Release工作,即每次都仅执行m_pEffect->SetTexture(TextureHandle, m_pTexture),那么只有第一次可以正确显示纹理,之后就全黑!
很可惜,DirectX的例子都是只设置一次纹理,没有参考价值。

我想问的是如果同一张纹理需要多次往effect里传,应该怎么做?

靠~~这个帖子在CGD里问,那边的版主~~~唉~不说了~还是GameRes好啊

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-1-24 13:20:00 | 显示全部楼层

Re:往Effect里传纹理的问题

DX SDK里的说明中有说明settexture把ref++了??无论是simple还是sdk里面都没有提到-_-!而且自己跟踪一下就知道ref根本没变嘛

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2005-1-24 19:03:00 | 显示全部楼层

Re:往Effect里传纹理的问题

我现在就是这个问题呀~~我用m_pEffect->SetTexture(...),只有第一次能成功渲染,以后就全黑,非要加上m_pDev(D3D Device)->SetTexture(0, m_pTexture)才可以~~怎么回事呀?

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-1-24 21:01:00 | 显示全部楼层

Re:往Effect里传纹理的问题

-_-!你究竟是用fixpipleine还是hlsl啊....又是effect又是device的.....在你使用shader的时候device的settexture是没有任何作用的

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2005-1-25 08:08:00 | 显示全部楼层

Re:往Effect里传纹理的问题

我也是这样认为的呀!在用hlsl时device的SetTexture应该是没有用处的!但问题就是这样,我也没办法呀!就是effect的SetTexture,第一次能正常显示(就是第一帧),以后就不行了,全黑,是不是我修改了渲染状态导致?那有那些渲染状态的改变会有这种结果呢?

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-1-25 09:32:00 | 显示全部楼层

Re:往Effect里传纹理的问题

pEffect->CommitChanges();
加上这句没??在device->beginscene()中改变effect的状态需要使用上面的语句...多看simple-_-

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-1-25 11:39:00 | 显示全部楼层

Re:往Effect里传纹理的问题

中间只要有个sample就行了,没有那末多麻烦事。

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-1-25 20:41:00 | 显示全部楼层

Re:往Effect里传纹理的问题

楼上的你说的是sampler吧

............有sampler与settexture有什么联系-_-!



31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-1-26 14:46:00 | 显示全部楼层

Re:往Effect里传纹理的问题

往CG里传纹理,最终都得传到sampler里面,并设定mip等参数。
我用Effect.setValue(,)方法来传纹理,不知道这是不是最快的方法,但是感觉比你们的法子方便多了。
也就是说:setvalue->texture->sampler

1

主题

130

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2005-1-26 22:13:00 | 显示全部楼层

Re:往Effect里传纹理的问题

...........................................................
hlsl......glsl
texture g_Tex;
sampler
{
texture <g_Tex>;
}

effect->setTexture("g_Tex",^&*^*&);................
和你说的是2种不同的操作办法了.......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 04:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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