2010-06-02 4 views
1

그래서 디스플레이 목록에 여러 주소가 있습니다. 나는 그것들을 할 수 있고 화면상에서 그것들을 쉽게 얻을 수있다. GL11.glCallList(address). 내 문제는 잠재적으로 더 효율적인 GL11.glCallLists(something)을 사용하여 하나의 기본 호출로 많은 목록을 호출하는 방법을 모르겠다는 것입니다. 나는 IntBuffer ib = ByteBuffer.allocateDirect(numberOfDisplayLists * 4).asIntBuffer()으로 IntBuffer를 만들고 나서, put(int index, int i)을 IntBuffer에 올바른 값으로 보내려고했지만, GL11.glCallLists(ib)을 호출해도 아무 일도 일어나지 않습니다.lwjgl : 어떻게 glCallLists를 사용할 수 있습니까?

도움 말? 여기 그것을하는 하나의 방법이다

+0

이유는 디스플레이리스트? 버텍스 배열/버퍼는 적어도 최근의 OpenGL에서 가장 빠르고 빠릅니다. – genpfault

+0

예 ... 나는 초보자입니다. 여전히 질문은 표시 목록에 관한 것이 아닙니다. 그것은 lwjgl과 함께 ByteBuffers를 사용하는 것입니다. 그것이 내가 도움이 필요한 것입니다. 그리고 내가하는 일에 상관없이 그것을 사용할 필요가 있습니다. – naiad

답변

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); 
관련 문제