Vertex Buffer Object

Vertex Buffer Object

Les VBOs (de l'anglais Vertex Buffer Object dont une traduction pourrait être objet tampon de vertex) est en OpenGL une méthode qui permet d'envoyer des données 3D (vertex, normales, maillage, couleurs, etc) vers la carte graphique. Cette méthode s'oppose au "mode immédiat" lequel est désormais désigné comme obsolète en OpenGL. Les VBOs ont été conçus afin d'obtenir les meilleurs performances possibles et sont actuellement la méthode la plus efficace en OpenGL du fait que les données 3D ne résident plus dans la mémoire système mais dans la mémoire de la carte graphique ce qui permet un rendu plus rapide.

Sommaire

Prérequis

L'affichage d'images en 3D et en temps réel pour notamment les jeux vidéo requiert beaucoup de calculs qui doivent être effectués en un temps très court. Afin que cela soit rendu possible ces calculs pour être optimisés ne sont pas réalisés par le processeur de l'ordinateur mais par la carte graphique qui est équipée d'unités de calcul spécialisés à cette fin. Une scène 3D étant souvent constituée d'énormément d'éléments, la gestion de la mémoire requise à leur affichage représente un point capital pour les performances et c'est là que les VBOs entrent en jeu.

Historique

Avant l'adoption des VBOs des méthodes pour optimiser l'affichage étaient les "Display List" et les "VertexArray". Les "Display List" permettent un stockage des données sur la carte graphique mais ne permettent pas de mettre à jour ces données. Les "VertexArray" conservent les données dans des tampons en mémoire système ce qui permet de les modifier mais oblige à transférer toutes ces données à chaque fois qu'elles doivent être affichées.

Pour répondre à ces problèmes les fabricants de cartes graphiques Nvidia et ATI développèrent les extensions NV_vertex_array_range [1] et ATI_vertex_array_object [2] qui furent regroupées et normalisées par l'ARB (Architecture Review Board) pour donner les "Vertex Buffer Object" (VBO, extension ARB_vertex_buffer_object) qui furent inclus dans la version d'OpenGL 1.4.

Interface

Voici les fonctions permettant de manipuler les VBOs :

glGenBuffers(sizei n, uint *buffers)

génère un identifiant pour un nouveau VBO. Retourne un entier non signé avec 0 comme valeur réservée.

glBindBuffer(enum target, uint buffer)

Indique quel VBO doit être considéré comme actif pour les opérations sur les VBOs.

glBufferData(enum target, sizeiptr size, const void *data, enum usage)

Envoie les données vers la carte graphique qui seront associées avec le VBO actif[3].

glDeleteBuffers(sizei n, const uint *buffers)

Détruit/libère un ou des VBO(s) lorsqu'on ne désire plus les utiliser.

Exemple en C

  /* Déclare une variable qui contiendra un identifiant pour un VBO */
  unsigned int id;
 
  /* 3 vertex définissant un triangle (dans le sens des aiguilles d’une montre) */
  float data[] = {
     1.0, 0.0,  1.0,
     0.0, 0.0, -1.0,
    -1.0, 0.0,  1.0
  };
 
  /* Crée un nouvel identifiant pour un VBO */
  glGenBuffers(1, &id);
 
  /* Active le nouveau VBO */
  glBindBuffer(GL_ARRAY_BUFFER, id);
 
  /* Envoie les données du triangle vers la carte graphique */
  glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);

Références

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Vertex Buffer Object de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Vertex Buffer Object — A Vertex Buffer Object (VBO) is an OpenGL extension that provides methods for uploading data ( vertex, normal vector, color, etc) to the video device for non immediate mode rendering. VBOs offer substantial performance gains over immediate mode… …   Wikipedia

  • OpenGL — Original author(s) Silicon Graphics Developer(s) Khronos Group Stable release 4.2 …   Wikipedia

  • Comparison of AMD graphics processing units — For information on Nvidia graphics processing units, see Comparison of Nvidia graphics processing units. This page contains general information about the GPUs and video cards by Advanced Micro Devices (AMD), including those by ATI Technologies… …   Wikipedia

  • Comparison of ATI graphics processing units — This page contains general information about ATI s GPUs and video cards based on official ATI specifications in table form. DirectX version noteDirectX version indicates which graphics acceleration operations the card supports. * DirectX 6.0… …   Wikipedia

  • VBO — may refer to:* Vainu Bappu Observatory * Vertex Buffer Object, an OpenGL extension for faster rendering of triangles. * Federation of Belgian Enterprises, Verbond van Belgische Ondernemingen in Dutch …   Wikipedia

  • Comparison of Nvidia graphics processing units — For information on AMD (previously ATI) graphics processing units, see Comparison of AMD graphics processing units. This page contains general information about Nvidia s GPUs and videocards based on official Nvidia specifications. Contents 1… …   Wikipedia

  • Microsoft Direct3D — Direct3D is part of Microsoft s DirectX application programming interface (API). Direct3D is available for Microsoft Windows operating systems (Windows 95 and above), and for other platforms through the open source software Wine. It is the base… …   Wikipedia

  • Direct3D — is part of Microsoft s DirectX API. Direct3D is only available for Microsoft s various Windows operating systems (Windows 95 and above) and is the base for the graphics API on the Xbox and Xbox 360 console systems. Direct3D is used to render… …   Wikipedia

  • Сравнение графических процессоров NVIDIA — Эта таблица содержит основную информацию о графических процессорах NVIDIA серии GeForce и видеокартах, построенных на официальных спецификациях NVIDIA. Содержание …   Википедия

  • Сравнение графических процессоров AMD — Эта таблица содержит основную информацию о графических процессорах AMD и видеокартах, построенных на официальных спецификациях AMD. Содержание …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”