O que é um OpenGL® VBO?
Ao usar as bibliotecas de gráficos de computador da Open Graphics Library® (OpenGL®) para programação de computadores, um objeto de buffer de vértice (VBO) é uma estrutura de dados que permite que um objeto tridimensional (3D) seja construído e armazenado na memória dos gráficos placa ou hardware gráfico. Isso permite que um OpenGL® VBO seja renderizado muito rapidamente e use muito menos recursos do sistema do que outras técnicas que usam desenho em modo imediato. Além dos ganhos de velocidade e da redução de sobrecarga de gráficos, um OpenGL® VBO também é uma estrutura de dados dinâmica - diferente da lista de exibição do OpenGL® - que pode ser alterada quando estiver na memória. O conceito de um OpenGL® VBO começou com fabricantes de hardware que originalmente incluíam - sob nomes diferentes - um tipo de funcionalidade semelhante à extensão das bibliotecas OpenGL® que posteriormente foi padronizada pelo OpenGL® Architecture Review Board (ARB).
Um OpenGL® VBO é basicamente uma combinação de dois outros tipos de estruturas de dados OpenGL®. Ele abrange a funcionalidade básica de uma matriz de vértices, porque as informações da geometria - incluindo as coordenadas, as normais e as cores dos vértices - podem ser armazenadas em uma matriz estruturada que pode ser passada ao OpenGL® para processamento. Ao contrário de uma matriz de vértices, no entanto, um OpenGL® VBO é armazenado no lado do servidor do renderizador e não precisa acessar constantemente o lado do cliente para obter informações sobre vértices.
Ao permitir que o VBO seja armazenado na memória gráfica, ele também assume algumas das propriedades de uma lista de exibição. A principal diferença é que um OpenGL® VBO pode ser modificado e uma lista de exibição não. Além disso, o VBO não é necessariamente copiado para a memória gráfica como seria uma lista de exibição; portanto, apenas uma estrutura de dados precisa estar presente na memória.
Quando um OpenGL® VBO é finalmente renderizado, a distância da memória gráfica em que está armazenada e a unidade de processamento gráfico (GPU) é muito pequena, permitindo uma rasterização muito rápida sem a necessidade de se mover primeiro pelo hardware do sistema mais lento. Em alguns casos, no entanto, o uso de VBOs não é suportado pelo hardware da placa de vídeo. Isso pode levar a problemas de programação que removem quaisquer benefícios adicionais do uso de uma VBO ou de um programa incompatível com algumas placas gráficas.
Existem alguns métodos que podem ajudar a otimizar como um OpenGL® VBO é tratado quando usado. Uma delas é fornecer dicas para a placa gráfica ou para o OpenGL®, para ajudar a determinar onde o VBO deve estar localizado na memória. Dependendo das dicas fornecidas, o VBO pode ser armazenado diretamente na memória gráfica da placa gráfica ou na memória principal de acesso aleatório (RAM) do sistema, se necessário.