首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有两个较小的渲染目标和一个较大的渲染目标哪个更好?

有两个较小的渲染目标和一个较大的渲染目标哪个更好?
EN

Stack Overflow用户
提问于 2012-06-30 17:45:48
回答 1查看 138关注 0票数 4

我正在编写一个延迟的渲染器,并试图打包我的gbuffer。

将漫反射和镜面反射存储在一起是否更好:

代码语言:javascript
复制
vec4 difSpec = (diffuse.xyz, specular) // FORMAT_RGBA
gl_FragData[0] = difSpc;

或使用2个渲染目标

代码语言:javascript
复制
vec3 diffuse
float specular
gl_FragData[0] = diffuse  // FORMAT_RGB
gl_FragData[1] = specular //  FORMAT_RED

问题是,其中一个会比另一个更好吗?为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-30 20:08:07

使用的缓冲区绑定/重新绑定操作越少越好。

更重要的是,在你的例子中,你只需要4个浮点数就行了: RGB+Specular。所以使用完整的128位rendertarget并打包(r,g,b,specular)值。它必须更好,因为对不同内存位置的访问(96位用于rgb,32位用于镜面反射)不利于缓存。

对于较旧的显卡,一个渲染目标也更好。无论如何,当你只使用96位时,你就是在浪费内存。g-buffer总是必须被紧密地打包。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11273136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档