当前位置:  开发笔记 > Android > 正文

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

如何解决《在OpenGLES中,如何加载具有透明像素的纹理?》经验,为你挑选了2个好方法。

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

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



1> Virne..:

对于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);


使用颜色调制.glTexEnvx(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); 然后将颜色的alpha分量设置为所需.glColor4f(255,255,255,alpha);

2> theisenp..:

@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);

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有