【发布时间】:2011-03-29 01:16:15
【问题描述】:
我正在使用 OpenGL ES 为 iPad 创建一个 2d 应用程序,但在绘制透明图像时遇到了一些问题。
我使用的是完全透明的 png-24 图像。我还改变了一些纹理的颜色,它们是白色的,有些区域是透明或半透明的。一切正常。
但是,当我尝试设置其中一种纹理的 alpha 值时,它的工作并不完全正确。颜色太饱和了,如果 alpha 值 = 0,我会在浅灰色背景上留下白色而不是透明的图像。当这样的透明图像在暗图像之上时,暗图像变成与透明图像颜色相似的颜色。
我尝试了glTexEnvi 和glBlendFunc 的许多参数组合,但均未成功。
我对 OpenGL 不是很了解,所以如果有人有任何建议,那就太好了。让我知道是否有任何有用的细节。
谢谢。
这里是OpenGL的初始化
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glDisable(GL_DEPTH_TEST); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_BLEND);【问题讨论】: