我有一个工作的Opengl ES 1.0 Android程序,其中包含如下所示的混合功能代码:
public void draw(GL10 gl) {
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
...
但是,这个混合函数并不能满足我的需求,我想用GL_SRC_COLOR替换glBlendFunc的第一个参数GL_SRC_ALPHA。不幸的是,这导致了一个GLException"无效的枚举。"这通常表示我给它的参数不是该对象的有效参数,但根据OpenGL ES文档,此参数是此函数的可接受值之一。知道为什么会产生这个错误吗?
答案 0 :(得分:2)
但根据OpenGL ES文档,此参数是此函数的可接受值之一
不,不是。来自GLES 1.1 spec:
函数
DST_COLOR
,ONE_MINUS_DST_COLOR
和SRC_ALPHA_SATURATE
仅对src
和函数SRC_COLOR
和ONE_MINUS_SRC_COLOR
有效仅对dst
有效。所有其他功能 适用于src
或dst
。
GLES 1.x在这方面非常有限,但事情就是如此。