LibGDX获得最大纹理大小 - 空指针异常

时间:2015-12-14 21:36:36

标签: java android opengl-es libgdx

我尝试在运行app的设备上获得最大纹理大小:

protected int getMaxTextureSize() {
    IntBuffer buf = BufferUtils.newIntBuffer(16);
    Gdx.gl.glGetIntegerv(GL20.GL_MAX_TEXTURE_SIZE, buf); //here is null pointer exception
    return buf.get();
}
当我使用它时,

和应用程序崩溃:

Exception in thread "main" java.lang.NullPointerException
    at com.example.ResourceManager.getMaxTextureSize(ResourceManager.java:32)
    at com.example.ResourceManager.<init>(ResourceManager.java:23)
    at com.example.Game.<init>(Game.java:17)
    at com.example.desktop.DesktopLauncher.main(DesktopLauncher.java:15)

(在Android上出现同样的异常)

为什么呢?每个论坛或文档都说它是正确的。

1 个答案:

答案 0 :(得分:1)

堆栈跟踪显示在Gdx.gl.glGetIntegerv内没有发生NullPointerException,强烈表明Gdx.gl.glGetIntegerv本身可能是一个NULL指针。

由于glGetIntegerv是必须存在于GL和GLES的所有版本中的核心功能,因此最合理的解释是在正确初始化GL绑定之前调用此函数。

要使此函数返回有意义的值,在任何情况下都需要有效的GL上下文,因此必须在创建GL上下文后将其移动到某个点。