Bonjour,
Je voulais savoir quelle etait exactement la difference entre ces 2 fonctions :
glGenBuffers et glGenBuffersARB (j'ai pris comme exemple glGenBuffers, mais le probleme est le meme pour d'autres fonction comme glBufferData(ARB), ...)
Pour moi, l'extention ARB signifie que l'on utilise une fonction qui n'est pas encore incluse dans la version finale d'OpenGL, mais encore en developpement. Je pensai aussi que avec OpenGL 2.0 il n'y avait plus de raison d'utiliser glGenBuffersARB.
Or, le SDK Cuda 1.1 est sortit recement (le 20/11/2007) et dedans il y a un projet qui m'interresse particulierement, permettant de simuler un ocean. Dedans, j'y trouve a la fois des glGenBuffers et des glGenBuffersARB.
Pourquoi NVidia, dans son SDK utilise les 2 fonctions ??? Je n'y vois pas d'interet, mais je me dis qu'ils doivent savoir ce qu'ils font et qu'il y a donc un interet a appeler glGenBuffersARB.
voici les 2 morceaux de code ou l'on trouve glGenBuffers et glGenBuffersARB :
Création d'un VBO :
Création d'un VBO pour les indices :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void createVBO(GLuint* vbo, int size) { // create buffer object glGenBuffers(1, vbo); glBindBuffer(GL_ARRAY_BUFFER, *vbo); glBufferData(GL_ARRAY_BUFFER, size, 0, GL_DYNAMIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); CUT_CHECK_ERROR_GL(); }
Si vous pouviez m'eclairer sur ce point
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 void createMeshIndexBuffer(GLuint *id, int w, int h) { int size = ((w*2)+1)*(h-1)*sizeof(GLuint); // create index buffer glGenBuffersARB(1, id); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, *id); glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER, size, 0, GL_STATIC_DRAW); // fill with indices for rendering mesh as triangle strips GLuint *indices = (GLuint *) glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); if (!indices) { return; } for(int y=0; y<h-1; y++) { for(int x=0; x<w; x++) { *indices++ = y*w+x; *indices++ = (y+1)*w+x; } *indices++ = 0xffffffff; // restart strip } glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }
Merci
Partager