Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Java LWJGL/OpenGL实现导致NullPointerException错误_Java_Eclipse_Opengl_Lwjgl - Fatal编程技术网

Java LWJGL/OpenGL实现导致NullPointerException错误

Java LWJGL/OpenGL实现导致NullPointerException错误,java,eclipse,opengl,lwjgl,Java,Eclipse,Opengl,Lwjgl,(这是我的全部代码) 首先,我使用本教程中的代码(githubrepo:)。我一步一步地写这段代码,但我坚持。。。运行它(多么可笑,我只创建了主文件)。重要的是,我在MacOSX10.10.3上使用Eclipse。OFC我已经添加了所有LWJGL库。这是我每次(fu…)运行代码时遇到的控制台错误: package com.flappygame.flappy; import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.opengl.

(这是我的全部代码)

首先,我使用本教程中的代码(githubrepo:)。我一步一步地写这段代码,但我坚持。。。运行它(多么可笑,我只创建了主文件)。重要的是,我在MacOSX10.10.3上使用Eclipse。OFC我已经添加了所有LWJGL库。这是我每次(fu…)运行代码时遇到的控制台错误:

package com.flappygame.flappy;

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL13.*;
import static org.lwjgl.system.MemoryUtil.*;

import java.nio.ByteBuffer;

import org.lwjgl.glfw.GLFWvidmode;
import org.lwjgl.opengl.GLContext;

public class Main implements Runnable {

    private int width = 1280;
    private int height = 720;

    private Thread thread;
    private boolean running = false;

    private long window;


    public void start() {
        running = true;
        thread = new Thread(this, "Game");
        thread.start();
    }

    private void init() {
        if (glfwInit() != GL_TRUE) {
            System.err.println("Could not initialize GLFW!");
            return;
        }

        //glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
        //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 4);
        //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
        glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
        window = glfwCreateWindow(width, height, "Flappy", NULL, NULL);
        if (window == NULL) {
            System.err.println("Could not create GLFW window!");
            return;
        }

        ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());     
        glfwSetWindowPos(window, (GLFWvidmode.width(vidmode) - width) / 2, (GLFWvidmode.height(vidmode) - height) / 2);

        glfwMakeContextCurrent(window);
        glfwShowWindow(window);     
        //System.out.println("OpenGL version: " + glGetString(GL_VERSION));
    }

    public void run() {
        init();
        while (running) {
            update();
            render();

            if (glfwWindowShouldClose(window) == GL_TRUE) {
                running = false;
            }

        }
    }

    private void update() {
        glfwPollEvents();
    }

    private void render() {
        glfwSwapBuffers(window);
    }

    public static void main(String[] args) {
        new Main().start();
    }

}
这里怎么了? 我对OpenGL版本(注释行)有问题。可能是因为这个原因吧?

消息“无法创建GLFW窗口!”非常清楚地说明了发生了什么。您没有获得GLFW窗口,但在本例中您没有中止程序,并继续使用
render()
函数,将
NULL
馈送到
glfWindowShouldClose()


您确实应该删除
glfwWindowHint(GLFW\u OPENGL\u FORWARD\u COMPAT,GL\u TRUE)如果您不打算请求某些>=3.2核心概要文件上下文。但是尝试请求GL4.4上下文在OSX上也不起作用。当我删除
glfwWindowHint(GLFW\u OPENGL\u FORWARD\u COMPAT,GL\u TRUE)时,使用操作系统实际支持的东西。

我在控制台中只能看到一堵红色的错误墙,类似于:
***+[NSUndoManager\u endTopLevelGroupings],/SourceCache/Foundation/Foundation-1153.20/Misc.subproj/NSUndoManager.m:340
java[3925:2167638]+[NSUndoManager(NSInternal)\u endTopLevelGroupings]只有在主线程上调用才安全。
这是一个全新的问题,与OpenGL完全无关。我认为它与OpenGL相关,但与Java无关。也许是关于Eclipse配置的问题?我正在使用最新的JDK和LWJGL版本。在苹果的网站上,我可以在支持OpenGL 4.1的列表中找到我的Macbook。事实上,在兼容性配置文件上,我有版本2.1,在核心配置文件4.1。我如何切换它,或者。。。我不。这就是我需要帮助的原因。我是Java/Eclipse的新手。我没想到会在环境层面出现问题。这和GL一点关系都没有。您得到的错误消息是OSX的API之一。简单的解决方案似乎是在主线程中进行事件处理,正如错误消息实际上所建议的那样(我也看不出创建单独线程的任何原因)。然而,我不是OSX方面的专家,你真的应该为此提出一个新问题。
Could not create GLFW window!
Exception in thread "Game" java.lang.NullPointerException
at org.lwjgl.system.Checks.checkPointer(Checks.java:66)
at org.lwjgl.glfw.GLFW.glfwSwapBuffers(GLFW.java:2578)
at com.radnok.flappy.Main.render(Main.java:74)
at com.radnok.flappy.Main.run(Main.java:60)
at java.lang.Thread.run(Thread.java:745)