我想知道为什么函数GLES20.glDeleteTextures()
在 OpenGL ES 2.0 中有三个参数,而"标准" glDeleteTextures()
只有两个参数。
即使在documentation中,也只有两个参数。
但是,在我的程序和许多论坛中,该函数采用了第三个参数(总是来自我所见过的0
)。
那么,第三个参数是什么?
编辑:其他功能有这个"问题"。 glGetIntegerv()
在OpenGL ES 2.0中也带有看似无用的第三个参数(仍为int
)。
答案 0 :(得分:1)
与其他OpenGL版本相比,这与ES 2.0有关。
参考文档显示了C / C ++ OpenGL绑定。
当您致电GLES20.glDeleteTextures()
时,您正在使用的是为Android定义的Java绑定。它们显然需要看起来不同,因为它们用于不同的编程语言。 Java绑定也没有标准化,所以它们的定义方式对负责Android的人有意义。
答案 1 :(得分:0)
偏移量(基于Android documentation)。 例如,
int[] textures = {id0, id1, id2, id3, id4, id5};
GLES20.glDeleteTextures(2, textures, 3);
此处,要删除的纹理数量为2
,来自偏移3
。
因此,只会删除id3
和id4
的纹理。
使用这样的函数可能是一个常见的用例:
GLES20.glDeleteTextures(textures.length, textures, 0);
哪个应删除textures
数组中的所有纹理。