Vertex buffer object

Description

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 !

Codes Sources

A voir également

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.