游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3057|回复: 7

请教 多次渲染到纹理为什么不行?

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-10-15 11:12:00 | 显示全部楼层 |阅读模式
//**************************************************************
// 创建渲染到贴图的表面
DirectDevice->CreateTexture(1024,768,1,D3DUSAGE_RENDERTARGET,
                        D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&g_pRenderTexture1 , 0);

DirectDevice->CreateTexture(1024,768,1,D3DUSAGE_RENDERTARGET,
                        D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&g_pRenderTexture2 , 0);
// 获取贴图的渲染表面
g_pRenderTexture1->GetSurfaceLevel(0 , &g_pRenderSurface);
g_pRenderTexture2->GetSurfaceLevel(0 , &g_pRenderSurface);
//*****************************************************************


我先把一个场景渲染到一张纹理g_pRenderTexture1上然后再把纹理g_pRenderTexture1贴在一个模型上以后渲染这个模型到纹理g_pRenderTexture2上,最后把g_pRenderTexture2贴在一个平面上显示在屏幕上。

但是奇怪的是,最后的那个平面上的贴图就然是显示的g_pRenderTexture1,我明明在渲染平面之前做了DirectDevice->SetTexture(0,g_pRenderTexture2);的。

请教高手这是怎么回事?

谢谢!

227

主题

1793

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2008-10-15 12:28:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

g_pRenderTexture1渲染之后
渲染到g_pRenderTexture1的东西又原封不动的渲染到g_pRenderTexture2了
也就是说
实际上渲染到g_pRenderTexture2和g_pRenderTexture1上的东西基本没变

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-10-15 14:34:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

不是原封不动,是先把一个场景(一个茶壶)渲染在g_pRenderTexture1上然后在把g_pRenderTexture1贴在一个正方体上,然后再把这个带有茶壶纹理的正方体渲染到g_pRenderTexture2上,最后把g_pRenderTexture2贴在一个平面上渲染到屏幕。

但是最终在屏幕上看见的是平面上有一个茶壶(g_pRenderTexture1),而不是我想看见的平面上是一个贴着茶壶纹理的正方体(g_pRenderTexture1)。

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-10-17 09:17:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

请大家帮忙

谢谢!

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-10-17 09:34:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

RenderToTexture之前要先取消其作为Texture的状态,另外也要记得Clear,lz可以用D3DXSaveTextureToFile将每一步的渲染结果保存到文件,看看到底是哪里出了问题,还有渲染到第二章贴图时不要用第一章做立方体纹理,擐一个试试,总之去掉两张纹理的耦合,尽可能的排除会产生问题的步骤

12

主题

112

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2008-10-17 09:39:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

还是找你旁边能看你带码的人问问吧。这种BUG别人不好猜。另楼上说的对,先确认两个纹理本身是对的。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-10-17 09:43:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

汗...我知道了,你看你这两行代码
g_pRenderTexture1->GetSurfaceLevel(0 , &g_pRenderSurface);
g_pRenderTexture2->GetSurfaceLevel(0 , &g_pRenderSurface);

用的居然是同一个Surface指针,不知道你想干嘛.......这样不出问题才怪-_-||

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2008-10-17 14:25:00 | 显示全部楼层

Re:请教 多次渲染到纹理为什么不行?

问题找到了:是在创建纹理CreateTexture1和CreateTexture2时一个大小为1024*768而另一个为400*300,导致400*300的那个没有显示整个场景,所以自己总是没有看见正确结果。

感谢大家的帮助!

其实我自己也想要自己身边的人帮我看看,但是现在的大学教育太落后了!老师们也只是拿着10多年以前的技术在上课,就算学校有强一点的老师但是研究方向有不同,同学们大都只是为了应付一下考试。也就是目前自己身边只有自己看自己的代码了。

幸好gameres上还有这么多的热心人,这样才使得我自己还在坚持学习游戏制作。

谢谢大家的帮助!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 02:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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