【问题标题】:OpenGL - How Transparency works?OpenGL - 透明度如何工作?
【发布时间】:2010-08-05 02:15:35
【问题描述】:

在 OpenGL 中是否需要 Alpha 通道来实现透明度?我可以使用 glBlendFunc 或其他任何东西以某种方式使黑色或白色透明/不可见吗?如果是,怎么做?

【问题讨论】:

  • 您所做的任何事情都非常、非常有可能与 Alpha 通道一样复杂或更复杂。如果只是为了学习没关系。那么,您为什么/为什么要避免使用 Alpha 通道来实现透明度?
  • 因为我已经有没有 alpha 通道的图像..
  • 提供更多细节 Opengl 中的透明度太笼统了。你想做什么?
  • stackoverflow.com/questions/3392393/… 重复,我的回答有什么问题? P.S.,如果这个问题是“有没有其他方法”,有,但更复杂。
  • 它不是重复的,另一个问题是如果要去除纹理/像素,这个是用于全局 opengl 透明度......我认为这是不同的。

标签: opengl


【解决方案1】:

不,您的纹理中不需要 Alpha 通道。在片段着色器中调用 discard 以获取所有符合透明度规则的片段。

【讨论】:

    【解决方案2】:

    是的,您需要 Alpha 通道才能使用透明度。您可以使用着色器模拟颜色键的行为,或处理图像并将颜色键替换为 alpha = 0.0 的像素。

    请注意,GPU 总是分配 RGBA 纹理,即使您需要 RGB 纹理。 Alpha 通道仍然存在于硬件中。

    【讨论】:

    • “请注意,GPU 总是分配 RGBA 纹理,即使您需要 RGB 纹理。Alpha 通道仍然存在于硬件中。” -> 你有这方面的参考吗?我从来没有听说过这个,即使它是有道理的。
    • @Calvin 该评论来自 NV/AMD 工程师,但我想我在幻灯片中看到了一些参考资料。
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多