游戏开发论坛

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

怎么把BackBuffer变成一张纹理?

[复制链接]

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-6-9 21:34:00 | 显示全部楼层 |阅读模式
如题?

我原本打算用渲染到纹理技术的, 但是据说这种技术有限制, RenderTarget纹理不能大于屏幕大小?

如果要用一张超过屏幕大小的RenderTarget来实现渲染到纹理该怎么办?

227

主题

1793

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2009-6-10 09:12:00 | 显示全部楼层

Re:怎么把BackBuffer变成一张纹理?

opengl有FBO
DX也肯定有类似的东西

7

主题

68

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2009-6-10 11:45:00 | 显示全部楼层

Re:怎么把BackBuffer变成一张纹理?

render to texture

53

主题

98

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-6-10 12:16:00 | 显示全部楼层

Re: 怎么把BackBuffer变成一张纹理?

StretchRect()

1

主题

9

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2009-6-10 21:50:00 | 显示全部楼层

Re: 怎么把BackBuffer变成一张纹理?

LPDIRECT3DSURFACE9 ScreenShotSurface;
D3DDISPLAYMODE d3dm;
pDevice->GetDisplayMode(0,&d3dm);
pDevice->CreateOffscreenPlainSurface(d3dm.Width,d3dm.Height,d3dm.Format,D3DPOOL_DEFAULT, &ScreenShotSurface, NULL);
pDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &ScreenShotSurface);

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-6-10 22:10:00 | 显示全部楼层

Re: Re: 怎么把BackBuffer变成一张纹理?

gths123: Re: 怎么把BackBuffer变成一张纹理?

LPDIRECT3DSURFACE9 ScreenShotSurface;
D3DDISPLAYMODE d3dm;
pDevice->GetDisplayMode(0,&d3dm)...

这个是截屏专用的,非常慢……

要用正经的render to texture,就是要创建有D3DUSAGE_RENDERTARGET参数的texture,然后取出level 0的surface,用SetRenderTarget()来设置为render target来渲染,之后这个texture就可以作为纹理使用。当然渲染完只有level 0的surface,其他的level可以用D3DUSAGE_AUTOGENMIPMAP,如果硬件支持的话。

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
 楼主| 发表于 2009-6-11 17:12:00 | 显示全部楼层

Re:怎么把BackBuffer变成一张纹理?

楼上说的这个有D3DUSAGE_RENDERTARGET参数的texture, 其尺寸是不是不能超过屏幕尺寸?

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-6-11 19:52:00 | 显示全部楼层

Re:怎么把BackBuffer变成一张纹理?

可以超过
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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