【问题标题】:Ignore alpha when rendering texture?渲染纹理时忽略alpha?
【发布时间】:2011-01-21 05:25:22
【问题描述】:

这个应该很简单,但它被证明是一个真正的头抓...

我有一个带有 Alpha 通道的纹理。在一次渲染过程中,我想渲染纹理但忽略 alpha 通道。无论我使用什么设置,alpha 小于 1 的像素都被绘制。

这些命令肯定应该禁用任何 alpha 测试/拒绝/混合吗?

gl.glDisable(GL10.GL_BLEND);
gl.glDisable(GL10.GL_ALPHA_TEST);

我意识到我可以使用两种版本的纹理,一种使用 alpha,另一种没有。但肯定有一种方法可以忽略 alpha 通道吗?

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    您可能必须为 glBlendFunc 使用与现在不同的源和目标混合模式。例如,如果您将 GL_ONE 用作源,将 GL_ZERO 用作目标,则不会涉及 alpha 像素。

    http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml

    【讨论】:

    • 你会这么想,但结果是一样的。
    • 嗯,这真的很奇怪。这可能是一个延伸,但您确定 100% 透明像素与您绘制的背景颜色不同吗?请记住,当前的图像编辑软件很难控制像素为 100% 透明的 R、G 和 B 通道发生的情况。仅出于这个原因,我必须创建一个从 Photoshop 的 PSD 到(在我的情况下)PowerVR 的 PVRTC 格式的成像工具链。我不得不跳过箍来完全控制 RGB 通道。发布代码或屏幕截图以提供更多信息。
    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多