gpt4 book ai didi

android - 在 opengl es 2.0 中混合 alpha

转载 作者:行者123 更新时间:2023-11-30 03:24:30 25 4
gpt4 key购买 nike

我尝试混合两个纹理的 alpha。首先纹理它一些图像,第二个纹理这是中心透明圆形的矩形。我需要混合这两种纹理,这样我的背景就会以透明的圆形为中心。为此,我尝试使用 glBlendFunc,但我只能得到整个透明背景,换句话说,我所有的背景都变得透明了。如何通过 glBlendFunc 混合纹理的 alpha?

最佳答案

一个问题是您不能使用 GLUtils.texImage2D() 从 Android 上的位图加载 alpha 纹理。这是一个常见问题,谷歌确实应该更好地记录。问题在于 Bitmap 类将所有图像转换为预乘格式,但这不适用于 OpenGL ES,除非图像完全不透明。本文对此提供了更多详细信息:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

要使用 glBlendFunc(),您必须首先使用 glEnable(GL_BLEND) 启用它,但是使用 OpenGL ES 2.0 将 2 个纹理混合在一起的最快方法是在 fragment 着色器中进行。这是一个简单的例子:

uniform sampler2D sampler2d_0;
uniform sampler2D sampler2d_1;
varying mediump vec2 texCoord;

void main()
{
vec3 vTexture0 = texture2D(sampler2d_0, texCoord);
vec3 vTexture1 = texture2D(sampler2d_1, texCoord);
vec3 vColor = mix(vTexture0, vTexture1, alpha);

gl_FragColor = vec4(vColor, 1.0);
}

关于android - 在 opengl es 2.0 中混合 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com