我在互联网上到处搜寻这个问题的答案。我意识到LWJGL3仍在开发中,但除了我之外,似乎没有其他人有这个问题。我有一台Mac和一台PC,我喜欢用Java和LWJGL开发,因为它应该是跨平台的。然而,该应用程序在PC上运行正常,但当我在Mac上运行并调试时,我会在控制台中看到:
[LWJGL] Version 3.0.0b build 35 | Mac OS X | x86_64
[LWJGL] Loaded library from java.library.path: lwjgl
[LWJGL] MemoryUtil accessor: MemoryAccessorUnsafe
[LWJGL] Loaded native library: lib/libjemalloc.dylib
[LWJGL] MemoryUtil allocator: JEmallocAllocator
[LWJGL] Loaded native library: lib/libglfw.dylib
[LWJGL] Loaded native library bundle: /System/Library/Frameworks/OpenGL.framework
[LWJGL] Failed to locate address for GL function glVertexArrayVertexAttribDivisorEXT
我相信“找不到…”在总账期间发生。createCapabilities()调用。因此,我认为这会导致OpenGL初始化失败,只会创建一个空白屏幕,因为这似乎就是发生在我身上的事情。
以下是实际代码:
glfwSetErrorCallback(errorCallback = errorCallbackPrint(System.err));
if (glfwInit() != GL11.GL_TRUE)
throw new IllegalStateException("Unable to initialize GLFW");
glfwDefaultWindowHints();
glfwWindowHint(GLFW_VISIBLE, GL_FALSE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
WIDTH = GLFWvidmode.width(vidmode);
HEIGHT = GLFWvidmode.height(vidmode);
RENDER_RATIO = (float) WIDTH / 1920.0f; // Scales all the rendering by a constant
window = glfwCreateWindow(WIDTH, HEIGHT, "Game", glfwGetPrimaryMonitor(), NULL);
if (window == NULL)
throw new RuntimeException("Failed to create the GLFW window");
// GLFW Callbacks
glfwSetKeyCallback(window, keyCallback = new Keyboard());
glfwSetCursorPosCallback(window, cursorPosCallback = new Mouse.CursorPos());
glfwSetMouseButtonCallback(window, mouseButtonCallback = new Mouse.MouseButton());
glfwSetScrollCallback(window, scrollCallback = new Mouse.Scroll());
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glfwShowWindow(window);
// Initialize OpenGL
GL.createCapabilities(); //New for LWJGL 3.0.0b
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, WIDTH, HEIGHT, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glClearColor(1f, 0f, 0f, 1.0f); //Red background
窗口初始化,但我猜OpenGL上下文不会,因为当我将背景设置为红色时,窗口是黑色的。在此之前,我遇到了“未在主线程上启动”异常,但通过在VM参数中添加-XstartOnFirstThread来修复这些异常。这是一个多线程的游戏循环,但我确保在主线程上进行渲染,并在新线程上进行更新,然而,由于没有正确初始化OpenGL,所以它甚至没有走那么远。它也会运行,但只在到达渲染调用时锁定,导致渲染循环冻结。以下是我的VM参数:
-XstartOnFirstThread -Djava.library.path=lib/ -Dorg.lwjgl.util.Debug=true
我真的很难找到其他有同样问题的帖子。我发现一些很老的帖子说他们是臭虫,所以也许这也是。这可能很简单,我只是在装傻,但如果有帮助的话,我已经在下面的链接中包含了整个类。提前谢谢。
全班:http://pastebin.com/eZ1qXPsd
这是一个在OpenGL驱动程序中实现后添加到ARB\u instanced\u arrays扩展中的函数。这意味着即使缺少特定的函数,一些驱动程序也可能公开扩展,因此在LWJGL中它是可选的。这来自扩展规范:
7) EXT\u direct\u state\u access应该如何与该扩展交互?
已解决:添加glVertexArrayVertexAttribDivisorEXT选择器free
顶点数组对象命令和GLGETXARRAYINTEGERI\u vEXT查询必须接受vertex\u ATTRIB\u array\u DIVISOR\u ARB以返回顶点数组对象的顶点ATTRIB数组DIVISOR状态。
DSA交互于2013年7月添加。如果实现响应wglGetProcAddress等。使用空指针查询“GLVertexArrayVertexAttributeDivisionText”,则DSA功能不可用。
信息:
无法定位GL函数glVertexArrayVertexAttribDivisorEXT的地址
是调试模式下的一个简单警告,可以安全忽略。如果需要使用该功能,可以使用以下代码检查该功能是否可用:
// get the extension instance for the current context
ARBInstancedArrays ext = ARBInstancedArrays.getInstance();
if ( ext.VertexArrayVertexAttribDivisorEXT != NULL ) {
// the function is available
}
我已经有这个错误将近一个星期了,现在我正准备让步。我已经使用Maven2制作了这个大的jar文件。当我使用以下命令运行jar文件时: 我得到这个错误: JavaProjectApplicationContext.xml如下所示: 到目前为止我试过的事情。 用3种不同的方式构建项目(2个IDE和命令行)删除了所有jar依赖关系冲突(我有spring-2.5.6.jar和spring-context-
当我简单地运行以下代码时,我总是得到这个错误。 我已将我的证书文件保存在 ,Boto应从中读取我的凭据。 我的设置有错吗? 下面是boto3.set\u stream\u logger('botocore',level='DEBUG')的输出。
所有,glGenVertexArray()有困难。我得到以下错误: oop.java:27Checks.checkorg.lwjgl.opengl.GL30.get实例(GL30.java:667)org.lwjgl.opengl.GL30.get实例(GL30.java:662)org.lwjgl.opengl.GL30.nglGenVertexArray(GL30.java:2789)org.
我正在使用安装在Program文件中的windows 8 java。我收到这样的错误"无法定位tools.jar.预计在C:\Program Files(x86)\Java\jre1.8中找到它。0_40\lib\tools.jar" 在创建2个系统变量为"JAVA_HOME",路径为'C:\Program Files\Java\jdk1.8.0_40'和"ANT_HOME",路径为'D:\Sof
然后,它甚至无法创建着色器(glCreateShader())返回0。 但是如果我使用GLFW_EGL_CONTEXT_API,我就可以完成大多数GL例程,如着色器加载、程序编译和链接、GL VBO设置等,但是在glDrawElements()上失败了。 如果我使用此设置打印供应商信息,我可以看到以下内容: 另外,如果我试图手动检索glDrawElements的函数指针,它将返回NULL。 我想了
致命错误:无法在第9行的E:\wamp1\wamp\www\sample.php中重新声明关闭()(先前在E:\wamp1\wamp\www\sample.php: 1中声明) 当我运行这个脚本时,它说不能在第9行中重新声明近()(以前在第1行中被标记)。 即使出现错误,与和相关的值也会传递给css。我在这里做错了什么?我正在调用第9行中的函数。有什么帮助吗?