1

所以我有一堆地址用于我的显示列表。我可以很容易地做到这些并在屏幕上显示它们GL11.glCallList(address)。我的问题是我不知道如何使用可能更有效GL11.glCallLists(something)的方式通过一个本地调用来调用一堆列表。我尝试使用 IntBuffer 创建一个 IntBuffer,IntBuffer ib = ByteBuffer.allocateDirect(numberOfDisplayLists * 4).asIntBuffer()然后put(int index, int i)将正确的值放入 IntBuffer,但是当我调用时GL11.glCallLists(ib)没有任何反应。

帮助?

4

1 回答 1

4

这是一种方法...

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);
于 2010-11-25T16:05:20.513 回答