为什么glDeleteTextures()在OpenGL ES 2.0中有三个参数?

时间:2016-11-25 14:15:17

标签: java android opengl-es opengl-es-2.0

我想知道为什么函数GLES20.glDeleteTextures() OpenGL ES 2.0 中有三个参数,而"标准" glDeleteTextures()只有两个参数。

即使在documentation中,也只有两个参数。

但是,在我的程序和许多论坛中,该函数采用了第三个参数(总是来自我所见过的0)。

那么,第三个参数是什么?

编辑:其他功能有这个"问题"。 glGetIntegerv()在OpenGL ES 2.0中也带有看似无用的第三个参数(仍为int)。

2 个答案:

答案 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。 因此,只会删除id3id4的纹理。

使用这样的函数可能是一个常见的用例:

GLES20.glDeleteTextures(textures.length, textures, 0);

哪个应删除textures数组中的所有纹理