OpengL es 2.0渲染到具有完全/部分和空透明度的纹理

时间:2014-10-28 08:49:49

标签: android opengl-es opengl-es-2.0

我想渲染具有各种透明度的图片,遗憾的是我无法弄清楚如何使用。

渲染的纹理是从OpenGL point-s创建的,我根据需要设置了它们的透明度。之后,我在纹理上应用模糊。 (没有模糊,它看起来仍然相似)

如果我渲染具有完全透明背景的纹理并使用此设置GLES20.GL_RGBA with GLES20.GL_UNSIGNED_BYTE,则不会显示部分透明部分。它看起来像这样(黑色斑点) enter image description here

如果在渲染图像中使用不完全透明的背景,渲染图像下方的图片会变得苍白,因此不会有完全透明的部分。

如果我使用GLES20.GL_RGB with GLES20.GL_UNSIGNED_SHORT_5_6_5,则不会有透明度,但我希望它看起来像这样,但透明度。

(这些图片是使用相同的代码但使用不同的渲染到纹理设置创建的,所以在第二张图片下也有那些圆圈。)

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您通过Android Bitmap类加载这些纹理,您的问题可能是Bitmap将图像转换为预加倍格式,该格式与OpenGL ES混合不直接兼容。您必须通过将RGB颜色通道除以Alpha来避免使用位图或反转片段着色器代码中的预乘。此article中有更多信息。