我想渲染具有各种透明度的图片,遗憾的是我无法弄清楚如何使用。
渲染的纹理是从OpenGL point-s创建的,我根据需要设置了它们的透明度。之后,我在纹理上应用模糊。 (没有模糊,它看起来仍然相似)
如果我渲染具有完全透明背景的纹理并使用此设置GLES20.GL_RGBA with GLES20.GL_UNSIGNED_BYTE
,则不会显示部分透明部分。它看起来像这样(黑色斑点)
如果在渲染图像中使用不完全透明的背景,渲染图像下方的图片会变得苍白,因此不会有完全透明的部分。
如果我使用GLES20.GL_RGB with GLES20.GL_UNSIGNED_SHORT_5_6_5
,则不会有透明度,但我希望它看起来像这样,但透明度。
(这些图片是使用相同的代码但使用不同的渲染到纹理设置创建的,所以在第二张图片下也有那些圆圈。)
答案 0 :(得分:0)
如果您通过Android Bitmap类加载这些纹理,您的问题可能是Bitmap将图像转换为预加倍格式,该格式与OpenGL ES混合不直接兼容。您必须通过将RGB颜色通道除以Alpha来避免使用位图或反转片段着色器代码中的预乘。此article中有更多信息。