Opengl es 在OpenGL ES中,如何加载具有透明像素的纹理?

Opengl es 在OpenGL ES中,如何加载具有透明像素的纹理?,opengl-es,Opengl Es,然后正确显示?例如,在矩形中有一个圆球,同时可以看到背景中的另一个纹理 编辑:此时,当我加载纹理时,源图像中的透明像素显示为黑色。对于iPhone和N95,此功能: 如果要从原始数据加载纹理,请将“内部格式”和“源格式”设置为“GL_RGBA” glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureWidth, textureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE,

然后正确显示?例如,在矩形中有一个圆球,同时可以看到背景中的另一个纹理


编辑:此时,当我加载纹理时,源图像中的透明像素显示为黑色。

对于iPhone和N95,此功能:

如果要从原始数据加载纹理,请将“内部格式”和“源格式”设置为“GL_RGBA”

glTexImage2D(GL_TEXTURE_2D, 0, 
    GL_RGBA,
    textureWidth,
    textureHeight, 
    0, 
    GL_RGBA,
    GL_UNSIGNED_BYTE,
    pointerToPixels);
渲染时,启用alpha混合:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);

@Virne提供的答案是正确的,我可以在安卓设备上使用它,只需稍加修改。我使用的
myImage
对象是一个透明的标准.png图像

我使用以下方法创建了纹理:

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0);
并且(像Virne一样),我在渲染时启用了alpha混合:

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

行了,谢谢!接下来,我将如何增加纹理透明度?使用颜色调制。glTexEnvx(GL_纹理_环境,GL_纹理_环境模式,GL_调制);然后将颜色的alpha分量设置为所需。glColor4f(255,255,255,alpha);您忘记了
GL10.
中的
gl.glBlendFunc(GL10.gl\u SRC\u ALPHA,gl\u ONE\u减去\u SRC\u ALPHA)
如果在使用texImage2d设置位图之前对其进行解码,请不要忘记指定该位图为ARGB位图。:BitmapFactory.Options opts=new BitmapFactory.Options();opts.inPreferredConfig=Bitmap.Config.ARGB_8888;位图Bitmap=BitmapFactory.decodeResource(context.getResources(),R.drawable.Bitmap,opts);