2010-06-02 3 views
1

J'ai donc un tas d'adresses pour mes listes d'affichage. Je peux faire ceux-ci et les obtenir sur l'écran avec GL11.glCallList(address) assez facilement. Mon problème est que je ne sais pas comment utiliser le GL11.glCallLists(something) potentiellement plus efficace pour appeler un tas de listes avec un appel natif. J'ai essayé de créer un IntBuffer avec IntBuffer ib = ByteBuffer.allocateDirect(numberOfDisplayLists * 4).asIntBuffer() puis put(int index, int i) en utilisant les valeurs correctes dans le IntBuffer, mais quand j'appelle GL11.glCallLists(ib) rien ne se passe.lwjgl: Comment utiliser glCallLists?

Aide?

+0

Pourquoi listes d'affichage? Les tableaux Vertex/buffers sont probablement au moins aussi rapides et réellement supportés dans les derniers tours OpenGL. – genpfault

+0

Ouais ... je suis plutôt un débutant. Pourtant, la question ne concerne pas vraiment les listes d'affichage; Il s'agit d'utiliser ByteBuffers avec lwjgl. C'est ce dont j'ai besoin d'aide. Et je vais devoir les utiliser, peu importe ce que je fais. – naiad

Répondre

4

est ici une façon de le faire ...

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);