我决定将我的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);
答案 0 :(得分:2)
内部格式GL_RGB
只有三个组件。它没有alpha。因此,如果您尝试访问alpha并使用不存在的alpha执行某些操作,OpenGL将为您填写。 1.0 ,这可能不是你想要的。
如果你想要alpha,你需要提供 alpha。 OpenGL不会让它成为你的存在,也不会认为黑色意味着“透明”。
或者,您没有启用混合或alpha测试。