首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在glsl中混合两个相机纹理时出现奇怪的纹理结果

在glsl中混合两个相机纹理时出现奇怪的纹理结果
EN

Stack Overflow用户
提问于 2019-05-24 17:30:05
回答 1查看 52关注 0票数 0

我正在用android做一个简单的图像过滤应用,我用同样的方法在GPUImage(https://github.com/BradLarson/GPUImage)中实现了低通滤波。

它会缓冲上一个和当前摄影机帧的混合并渲染它。所以我创建了一个缓冲区FBO,渲染当前的相机纹理,在低通滤波器着色器中重新使用它作为下一个相机纹理的混合纹理。

我在一些智能手机(Galaxy S10、Nexus6P等)上测试了代码。它工作得很好。然而,在Galaxy S8(马里-G71)中,结果很奇怪,我不知道哪里出了问题。

这些都是错误的结果

下面是我的代码:

代码语言:javascript
复制
Fragment shader:
varying vec2 vTextureCoord;
uniform sampler2D sTexture1;
uniform float filterStrength;

void main() {
    vec4 texColor0 = texture2D(sTexture, vTextureCoord);
    vec4 texColor1 = texture2D(sTexture1, vTextureCoord);
    gl_FragColor = mix(texColor0, texColor1, filterStrength);
}

导致这种结果的原因是什么?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-28 02:13:02

这些工件看起来像是瓦片对齐的马里,所以如果我不得不猜测,你正在读取当前绑定的帧缓冲区颜色附件作为输入纹理,同时写入它。

这是规范中的“实现定义”行为,并发读写肯定会在基于瓦片的渲染器上做不好的事情。

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

https://stackoverflow.com/questions/56289696

复制
相关文章

相似问题

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