如何解决修改Alpha值时,帧缓冲区的RGB颜色不同
我有片段着色器,可以写入帧缓冲区的纹理。我有2个使用framebuffer输出纹理的着色器。第一只使用alpha,第二只使用RGB。当帧缓冲区的着色器返回def verify_login():
file = open("login.txt","r")
for row in file:
field = row.split(",")
if username.get() == field[1] and password.get() == field[2]:
print("Correct!")
else:
print("Fail")
时,即使在我手动将fragmentColor.a = 0
设置为fragmentColor.a
的情况下,在第二着色器中使用时,RGB分量也会完全消失。是否可以防止这种“ RGB消失”,或者我遇到了一些错误?是的,我可以为每个着色器生成不同的纹理,但是它会花费大量的性能,因为即使只有一个“绘制”,它的成本也很高。但是,如果我可以同时输出到两个纹理,那也可以解决整个问题。有人有什么建议/解决方案吗?
解决方法
您可能已启用混合并将glBlendFunc
设置为glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)
之类的内容,这也会影响目标alpha值。为了解决这个问题,可以进行混合,使用glBlendFuncSeparate[i]
进行设置,然后选择源方程式和目标方程式,以便根据应用程序的需要传递RGB值。使用“ i” 变体为每个片段着色器输出目标设置不同的混合功能(如果您有一个具有多个输出的片段着色器),或者在调用之前多次调用非“ i”版本每个渲染通道都可以为您的各个片段着色器进行设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。