Un exemple simple de Vertex Buffer Object utilisant un tableau
de données entrelacées.
avantage des VBO=les données des vertex et des couleurs sont directement
stockées dans la mémoire de la carte graphique d'où plus de transfert
CPU vers GPU=gain de temps
les VBO sont supportées par l'extension openGL GL_ARB_VERTEX_BUFFER_OBJECT
Source / Exemple :
les portions de code intéressantes;
les données en data;
-------------------
CV dword 1.0,0.0,0.0,0.0,0.0,-2.0
dword 0.0,1.0,0.0,1.0,0.0,-2.0
dword 0.0,0.0,1.0,1.0,1.0,-2.0
dword 1.0,1.0,1.0,0.0,1.0,-2.0
CVindex BYTE 0,1,2,3
puis lors de la creation de la fenetre,après obtention du contexte
OpenGL ; (cf VBO_classe.inc pour les définitions de macros)
--------------------------------------------------------------
;initialisation de la classe VBO
call construct
call VB.Pvbo
;generation des buffers
BB VB.IDbuffVertex1
BB VB.IDbuffIndex1
;initialisation des buffers Couleur/Vertex
InitBO VB.IDbuffVertex1,GL_ARRAY_BUFFER,CV,GL_STATIC_DRAW
;initialisation des buffers index
InitBO VB.IDbuffIndex1,GL_ELEMENT_ARRAY_BUFFER,CVindex,GL_STATIC_DRAW
puis affichage du quads;
------------------------
;activation du buffer de couleur/vertex entrelacé
INbuff VB.IDbuffVertex1,GL_ARRAY_BUFFER
;pointeur sur les données stockées dans la mémoire
;de la carte graphique
invoke glVertexPointer,3,GL_FLOAT,48,12
invoke glColorPointer,3,GL_FLOAT,48,0
;activation du buffer d'index
INbuff VB.IDbuffIndex1,GL_ELEMENT_ARRAY_BUFFER
;dessin du quads
invoke glEnableClientState,GL_VERTEX_ARRAY
invoke glEnableClientState,GL_COLOR_ARRAY
invoke glInterleavedArrays,GL_C3F_V3F,0,0
INVOKE glDrawElements,GL_QUADS,4,GL_UNSIGNED_BYTE,0
invoke glDisableClientState,GL_COLOR_ARRAY
invoke glDisableClientState,GL_VERTEX_ARRAY
;désactivation des buffers
OUTbuff GL_ELEMENT_ARRAY_BUFFER
OUTbuff GL_ARRAY_BUFFER
ret
Conclusion :
Vive OpenGL et MASM !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.