请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 5468|回复: 5

关于SetRenderTarget的一点问题 [复制链接]

Rank: 12Rank: 12Rank: 12

注册时间
2010-7-6
积分
798
发表于 2011-12-5 22:58:11 |显示全部楼层
SetRenderTarget是否会造成GPU的CommandBuffer的Flush?

如果有这样的一个渲染流程:

方法一:
A,B,C分别是同样大小的RenderTexture, a,b,c分别对应其RenderSurface,
SetRenderTarget(a)
Draw...
SetRenderTarget(b)
SetTexture(A)
Draw...
SetRenderTarget(c)
SetTexture(B)
Draw...
...其他地方使用C,

方法二:
可否用这样的流程替代:
SetRenderTarget(a)
Draw...
SetRenderTarget(b)
SetTexture(A)
Draw...
SetRenderTarget(a)
SetTexture(b)
Draw...
...其他地方使用A,

方法二比方法一节省1张RT,但是是否会造成性能比方法一差一点?
即:SetRenderTarget是否会造成GPU的CommandBuffer的Flush?或者在哪一些情况下是否会flush command buffer?
thank you...


Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2009-9-20
积分
1195
发表于 2011-12-5 23:40:47 |显示全部楼层
不会,因为这些命令是提交到 D3D RT 的 command buffer 中,自然会保证调用顺序,方法二是正确的做法。

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2011-4-21
积分
542
发表于 2011-12-6 08:14:26 |显示全部楼层
过多的setrendertarget对效率影响非常大

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-7-6
积分
798
发表于 2011-12-6 10:13:56 |显示全部楼层
本帖最后由 sincrystal 于 2011-12-6 10:16 编辑

我记得以前在什么地方看过,SetRenderTarget会造成GPU的CommandBuffer在某一些情况下的flush(比如重复交换设置时会flush,但是不交换设置时就不flush了),但是不是很确定,所以在后处理系统优化的时候,在考虑这个问题.

thank you..呵呵.

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2009-9-20
积分
1195
发表于 2011-12-7 07:19:11 |显示全部楼层
除非你回读 rt 数据。

使用道具 举报

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

注册时间
2011-2-18
积分
13392
发表于 2011-12-21 12:32:58 |显示全部楼层
用MRT不是更好么 d9以后就支持了 可惜opengl es 不支持

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-2-25 01:43 , Processed in 0.053882 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部