OpenGL ES black as alpha(透明度)

时间:2012-02-26 17:02:55

标签: android c++ opengl-es

我决定将我的Android项目转移到C ++,我遇到了问题。在Java代码中我加载了没有alpha值的纹理,黑色实际上是我的透明色,但现在我不能这样做。黑色只是黑色,不透明。

我正在加载纹理:

GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*) image_data);

1 个答案:

答案 0 :(得分:2)

内部格式GL_RGB只有三个组件。它没有alpha。因此,如果您尝试访问alpha并使用不存在的alpha执行某些操作,OpenGL将为您填写。 1.0 ,这可能不是你想要的。

如果你想要alpha,你需要提供 alpha。 OpenGL不会让它成为你的存在,也不会认为黑色意味着“透明”。

或者,您没有启用混合或alpha测试。