android/opengles alpha 纹理不是半透明的而是二进制透明的

标签 android opengl-es transparency textures alphablending

我正在绘制一些带有 alpha channel 的纹理,但是当它们显示时,看起来 alpha channel 只是二进制的。所以一个像素要么是透明的要么是不透明的,尽管在纹理文件本身中像素是半透明的。混合设置如下:

gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

这个问题有解决办法吗?

上面是应该的样子,下面是应该的样子:

alt text

最佳答案

试试这个:

gl.glEnable(GL10.GL_BLEND);    
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

gl.glEnable(GL10.GL_ALPHA_BITS);
//draw...
gl.glDisable(GL10.GL_ALPHA_BITS);

关于android/opengles alpha 纹理不是半透明的而是二进制透明的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634444/

相关文章:

java - 如何在 OpenGL 中将纹理调整到正方形并居中?

ios - 超过 256 个顶点的 OpenGL ES2 网格断开

vb.net - 使窗体的背景透明

c++ - 如何在具有透明度的大型广告牌渲染中避免距离排序

jquery - 父div透明背景但不影响子div透明度

Android库模块使用proguard

android - 如何防止为已回收的 View 生成不必要的工作线程?

java - 从表面 View 切换到主要 Activity 类

android - Android 上 libgdx 游戏的全屏分辨率

opengl-es - 具有白色轮廓的 OpenGL 彩色位图字体