所以我的显示列表有很多地址。我可以轻松地通过GL11.glCallList(address)
将它们显示在屏幕上。我的问题是我不知道如何使用可能更有效的GL11.glCallLists(something)
来通过一个本地调用来调用一堆列表。我尝试使用IntBuffer ib = ByteBuffer.allocateDirect(numberOfDisplayLists * 4).asIntBuffer()
创建一个IntBuffer,然后将正确的值put(int index, int i)
放入IntBuffer,但是当我调用GL11.glCallLists(ib)
时,什么也没有发生。
救命?
最佳答案
这是一种实现方式...
static int size = 10;
int compiledList;
IntBuffer lists;
lists = BufferUtils.createIntBuffer(size);
compiledList = GL11.glGenLists(size);
for (int i = 0; i < size; i++) {
GL11.glNewList(compiledList + i, GL11.GL_COMPILE);
...render here...
GL11.glEndList();
lists.put(offset);
}
lists.flip();
GL11.glListBase(compiledList);
GL11.glCallLists(lists);