调用 "glClearColor()" 函数导致核心转储
Calling the "glClearColor()" function causes core dump
我是 LWJGL 和 OpenGL 的新手,我已经进行了一些 google 搜索,但似乎找不到与此相关的任何其他内容。
我做了一个基本的测试程序来创建一个空白window。我可以很好地创建 window 和 运行 应用程序,但是如果我尝试使用 glClearColor()
更改清晰颜色,应用程序 "crashes."
这是控制台中打印的文本:
[error occurred during error reporting (printing problematic frame), id 0xe0000000]
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /*****/*******/eclipse/java-neon/workspace/LWJGL Project/hs_err_pid10749.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
这是错误创建的文件(相当大):
https://pastebin.com/9h0gsRmTlink
这是代码:
package me.smorce.project;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryUtil.*;
import org.lwjgl.glfw.GLFWVidMode;
import me.smorce.project.input.Input;
public class Game
{
public boolean running = false;
private long window;
public int windowWidth = 1280;
public int windowHeight = windowWidth / 16 * 9;
public void start()
{
running = true;
init();
while(running)
{
update();
render();
if(glfwWindowShouldClose(window)) running = false;
}
}
private void init()
{
if(!glfwInit())
{
System.err.println("GLFW failed to initialize!");
return;
}
glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
window = glfwCreateWindow(windowWidth, windowHeight, "Game", NULL, NULL);
if(window == NULL)
{
System.err.println("GLFW failed to create the window");
return;
}
GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
glfwSetWindowPos(window, (videoMode.width() - windowWidth) / 2, (videoMode.height() - windowHeight) / 2);
glfwSetKeyCallback(window, new Input());
glfwMakeContextCurrent(window);
glEnable(GL_DEPTH_TEST);
System.out.println("OpenGL: " + glGetString(GL_VERSION));
glfwShowWindow(window);
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
private void update()
{
glfwPollEvents();
if(Input.keys[GLFW_KEY_SPACE])
{
System.out.println("SPACE BAR");
}
}
private void render()
{
glfwSwapBuffers(window);
}
}
任何 pointers/tips 都会有所帮助。提前致谢。
你不见了
GL.createCapabilities();
// This line (~the above) is critical for LWJGL's interoperation with GLFW's
// OpenGL context, or any context that is managed externally.
// LWJGL detects the context that is current in the current thread,
// creates the GLCapabilities instance and makes the OpenGL
// bindings available for use.
此外,也将 glEnable(GL_DEPTH_TEST);
移到该行之后。
你的机器现在不会崩溃,但你可能会遇到不同的情况[=14=]
我是 LWJGL 和 OpenGL 的新手,我已经进行了一些 google 搜索,但似乎找不到与此相关的任何其他内容。
我做了一个基本的测试程序来创建一个空白window。我可以很好地创建 window 和 运行 应用程序,但是如果我尝试使用 glClearColor()
更改清晰颜色,应用程序 "crashes."
这是控制台中打印的文本:
[error occurred during error reporting (printing problematic frame), id 0xe0000000]
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /*****/*******/eclipse/java-neon/workspace/LWJGL Project/hs_err_pid10749.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
这是错误创建的文件(相当大): https://pastebin.com/9h0gsRmTlink
这是代码:
package me.smorce.project;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryUtil.*;
import org.lwjgl.glfw.GLFWVidMode;
import me.smorce.project.input.Input;
public class Game
{
public boolean running = false;
private long window;
public int windowWidth = 1280;
public int windowHeight = windowWidth / 16 * 9;
public void start()
{
running = true;
init();
while(running)
{
update();
render();
if(glfwWindowShouldClose(window)) running = false;
}
}
private void init()
{
if(!glfwInit())
{
System.err.println("GLFW failed to initialize!");
return;
}
glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
window = glfwCreateWindow(windowWidth, windowHeight, "Game", NULL, NULL);
if(window == NULL)
{
System.err.println("GLFW failed to create the window");
return;
}
GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
glfwSetWindowPos(window, (videoMode.width() - windowWidth) / 2, (videoMode.height() - windowHeight) / 2);
glfwSetKeyCallback(window, new Input());
glfwMakeContextCurrent(window);
glEnable(GL_DEPTH_TEST);
System.out.println("OpenGL: " + glGetString(GL_VERSION));
glfwShowWindow(window);
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
private void update()
{
glfwPollEvents();
if(Input.keys[GLFW_KEY_SPACE])
{
System.out.println("SPACE BAR");
}
}
private void render()
{
glfwSwapBuffers(window);
}
}
任何 pointers/tips 都会有所帮助。提前致谢。
你不见了
GL.createCapabilities();
// This line (~the above) is critical for LWJGL's interoperation with GLFW's
// OpenGL context, or any context that is managed externally.
// LWJGL detects the context that is current in the current thread,
// creates the GLCapabilities instance and makes the OpenGL
// bindings available for use.
此外,也将 glEnable(GL_DEPTH_TEST);
移到该行之后。
你的机器现在不会崩溃,但你可能会遇到不同的情况[=14=]