gpt4 book ai didi

ios - 在 GLSL 中获取后台缓冲区的颜色

转载 作者:行者123 更新时间:2023-11-29 11:00:32 25 4
gpt4 key购买 nike

我正在尝试提取着色器片段后面的颜色。我四处搜索,发现人们这样做的各种例子:

vec2 position = ( gl_FragCoord.xy / u_resolution.xy );
vec4 color = texture2D(u_backbuffer, v_texCoord);

这是有道理的。然而,没有人展示过传入后台缓冲区制服的示例。

我试着这样做:

int backbuffer = glGetUniformLocation(self.shaderProgram->program_, "u_backbuffer");
GLint textureID;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &textureID);//tried both of these one at a time
glGetIntegerv(GL_RENDERBUFFER_BINDING, &textureID);//tried both of these one at a time
glUniform1i(backbuffer, textureID);

但我只是变黑了。这是在 cocos2d iOS 中,仅供引用

有什么建议吗?

最佳答案

您可以这样做,但仅限于 iOS 6.0。 Apple 添加了一个名为 GL_EXT_shader_framebuffer_fetch 的扩展名这使您可以在正在渲染的片段中读取当前帧缓冲区的内容。此扩展引入了一个名为 gl_lastFragData 的新变量,您可以在片段着色器中读取它。

This question by RayDeeA展示了这方面的实际示例,尽管您需要更改扩展的名称,因为他们的答案中指出了组合点。

这应该在所有运行 iOS 6.0 的设备上得到支持,并且是实现自定义混合模式的好方法。我听说这是一个成本非常低的操作,但我自己还没有做太多分析。

关于ios - 在 GLSL 中获取后台缓冲区的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com