在使用NDK Camera界面时,我偶然发现SurfaceTexture可以请求defaultSize可以被覆盖的问题。 我想获取实际大小,但SurfaceTexture无法提供查询方法。 因此,我尝试这样做:
// this runs directly after SurfaceTexture.updateTexImage
GLfloat width, height;
glGetTexLevelParameterfv(GL_TEXTURE_EXTERNAL_OES, 0, GL_TEXTURE_WIDTH, &width);
glGetTexLevelParameterfv(GL_TEXTURE_EXTERNAL_OES, 0, GL_TEXTURE_HEIGHT, &height);
在Mali系统上可以完美地工作,但在Adreno系统上返回GL_INVALID_ENUM。 extension's description并没有引入GL_TEXTURE_EXTERNAL_OES作为GetTexLevelParameter的有效参数,因此我认为我对Mali系统很幸运。
是否可以在OpenGL ES(3.1)中查询GL_TEXTURE_EXTERNAL_OES的大小?