【问题标题】:OpenGL Render to Transparent TextureOpenGL渲染到透明纹理
【发布时间】:2017-01-04 09:23:15
【问题描述】:

我有一个系统可以使用 C++ 中的 OpenGL 将不同的对象渲染为不同的 RGBA 纹理。我想将这些纹理叠加在一起,但我的问题是每个纹理都渲染了 glClearColor。

如何告诉 OpenGL 使纹理的 ClearColor 部分透明(0.0f alpha),这样我仍然可以看到其他图层后面的部分图层?

【问题讨论】:

    标签: opengl transparency framebuffer


    【解决方案1】:

    glClearColor的第四个参数允许你指定一个alpha值在你清除渲染目标时设置,所以你可以只传0让它清晰到透明。

    您的渲染目标显然需要一个 Alpha 通道。此外,可以使用 glColorMask 启用或禁用使用 glClearColor 指定的值清除 alpha 通道。

    【讨论】:

    • 谢谢!不敢相信我什至没有想到这一点!它有点工作,纹理的背景消失了!但是我得到了一个残酷的电影颗粒,比如闪烁,知道为什么会这样吗?使用 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);再次感谢!
    • 闪烁听起来像是某种同步问题。 khronos.org/opengl/wiki/Synchronization
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2023-03-30
    • 2014-08-12
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多