23

然后正确显示?一个例子是在一个矩形中有一个圆球,同时能够在背景中看到另一个纹理。

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

4

2 回答 2

31

对于 iPhone 和 N95 这有效:

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

glTexImage2D(GL_TEXTURE_2D, 0, 
    GL_RGBA,
    textureWidth,
    textureHeight, 
    0, 
    GL_RGBA,
    GL_UNSIGNED_BYTE,
    pointerToPixels);

并且在渲染时,启用 alpha blend:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
于 2009-03-04T16:17:52.227 回答
12

@Virne 提供的答案是正确的,我可以通过一些小的修改将它用于 Android 设备。我使用的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);
于 2011-11-04T13:12:41.963 回答