Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我得到;当前线程中没有当前OpenGL上下文。”;用于glViewport(),而其他GL静态方法可以工作 < >我将一个C++ OpenGL GLFW引擎移植到java,当从窗口大小回调中运行GLVIEW PORTH()时,我得到了“无上下文的当前”错误。我该如何解决这个问题?这是我的密码_Java_Opengl - Fatal编程技术网

我得到;当前线程中没有当前OpenGL上下文。”;用于glViewport(),而其他GL静态方法可以工作 < >我将一个C++ OpenGL GLFW引擎移植到java,当从窗口大小回调中运行GLVIEW PORTH()时,我得到了“无上下文的当前”错误。我该如何解决这个问题?这是我的密码

我得到;当前线程中没有当前OpenGL上下文。”;用于glViewport(),而其他GL静态方法可以工作 < >我将一个C++ OpenGL GLFW引擎移植到java,当从窗口大小回调中运行GLVIEW PORTH()时,我得到了“无上下文的当前”错误。我该如何解决这个问题?这是我的密码,java,opengl,Java,Opengl,初始化: 以下是更新方法: public void update() { int error = glGetError(); if(error != GL_NO_ERROR) System.err.println("OpenGL Error: " + error); glfwPollEvents(); glfwSwapBuffers(window); } 除了IDK,那里的一切似乎都很好 最后,这里是窗口大小回调方法:

初始化:

以下是更新方法:

public void update() {
        int error = glGetError();
        if(error != GL_NO_ERROR) System.err.println("OpenGL Error: " + error);

        glfwPollEvents();
        glfwSwapBuffers(window);
    }
除了IDK,那里的一切似乎都很好

最后,这里是窗口大小回调方法:

private void windowSizeCallback(long window, int width, int height) {
    glViewport(0, 0, width, height);
}

编辑:噢,我还想指出,错误来自glViewport()方法调用。

我猜您的windowSizeCallback没有从您在(glfwPollEvents)中将上下文设置为当前的线程中被调用。根据:“在某些平台上,某些事件直接发送到应用程序,而不经过事件队列,导致回调在调用其中一个事件处理函数之外被调用。”也许这就是问题所在?PS:我从来没有实际使用过glfwHmm,如果是这样的话,那么我不知道该怎么办,因为只在调整大小时设置视口要比不断设置视口有效得多。只需做一个布尔标志,上面写着“嘿,你需要重做视口”,然后在主线程中读出它。确保其不稳定,以防万一。这样你仍然只做一次,但是你会晚一点做。所以在你的windowSizeCallback中做“FLAG=true”,然后在main中做“if(FLAG){FLAG=false,glViewport(…)}是的,我知道我可以做到。但是每个操作都很重要,如果每个循环(是的,我知道它实际上没有做任何事情)我宁愿没有一个常量,但我是一个巨大的效率怪胎,所以是的。我最终发现回调是在窗口可见之前被调用的,所以当我使窗口可见时,我只是将行向下移动。尽管如此,谢谢。我确实想过对此发表评论,但后来我看到了你的glfwMakeContextCurrent,在规范中,它没有提到隐藏的window。glfwShowWindow也没有告诉任何关于上下文的信息。这很烦人。
private void windowSizeCallback(long window, int width, int height) {
    glViewport(0, 0, width, height);
}