【发布时间】:2009-03-04 16:02:55
【问题描述】:
然后显示正确?一个例子是在一个矩形中有一个圆球,同时能够在背景中看到另一个纹理。
编辑:目前,当我加载纹理时,源图像中的透明像素显示为黑色。
【问题讨论】:
标签: opengl-es
然后显示正确?一个例子是在一个矩形中有一个圆球,同时能够在背景中看到另一个纹理。
编辑:目前,当我加载纹理时,源图像中的透明像素显示为黑色。
【问题讨论】:
标签: opengl-es
适用于 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);
【讨论】:
@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);
【讨论】: