我很难让LWJGL接受我的浮子缓冲器 .

我使用LWJGL的方法来分配直接浮动缓冲区,但它仍然会为“直接分配”抛出异常 .

块类中的两个实例变量:

私有Floatbuffer缓冲区; private int vertCount;

填充我的顶点数组后:

buffer = BufferUtils.createFloatBuffer(vertCount); buffer.put(vertArray); buffer.rewind();

通过以下方式获取VBO的句柄:

vertID = VBOutil.createVBOID(); public static int createVBOID(){IntBuffer buffer = BufferUtils.createIntBuffer(1); GL15.glGenBuffers(缓冲液); return buffer.get(0);
}

我用来绑定缓冲区的方法:

public static void vertexBufferData(int id,FloatBuffer buffer){GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,id); GL15.glBufferData(GL15.GL_ARRAY_BUFFER,buffer,GL15.GL_STATIC_DRAW); }

我的程序流是这样的,每个帧调用都发送到vertexBufferData,然后发送到以下方法:

public static void render(int vertID,int numIndices){GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,vertID); GL11.glVertexPointer(3,GL11.GL_FLOAT,40,0);
GL11.glNormalPointer(GL11.GL_FLOAT,40,12);
GL11.glColorPointer(4,GL11.GL_FLOAT,40,24);

GL11.glDrawArrays(GL11.GL_QUADS,0,numIndices);

GL11.glPopMatrix();
}

任何提供的帮助将不胜感激 . 我一直坚持这个问题 .

编辑:
这是堆栈跟踪:

org.lwjgl.BufferChecks.checkDirect(BufferChecks.java:138)中的线程“main”java.lang.NullPointerException中的异常,位于org.lwjgl.opengl.GL15.glBufferData(GL15.java:155)的lwjgl.VBOutil.vertexBufferData (VBOutil.java:27)位于lwjgl.Chunk.bind(Chunk.java:35)的lwjgl.ChunkLoader.bind(ChunkLoader.java:81)位于lwjgl.ChunkLoader.render(ChunkLoader.java:68)位于lwjgl.Scene .update(Scene.java:19)at lwjgl.Main.gameLoop(Main.java:32)at lwjgl.Main.main(Main.java:17)

vertArray是一个浮点数组 .

我的块类是沿着单纯噪声函数的立方体构成的地形的抽象 . 我构造'块'并将它们添加到块arraylist中,如果它们在噪声表面的阈值内 . 然后从每个块中获取顶点信息并将其添加到浮点运算符中 . 知道大小后,我将顶点信息放入一个数组中,通过LWGL的实用方法放入浮点缓冲区 . 现在我的chunkloader类只保存1个块,以便我可以调试这个问题 . 我计划为每个块使用单独的VBO句柄,因为chunkloader不应该有超过9个块 .