Estou usando o OpenGL há pouco tempo e gostaria de esclarecimentos sobre os VBOs . Pelo que entendi, um VBO é um objeto armazenado no VRAM. No modo imediato, para aplicar uma textura, basta vinculá-la e especificar as coordenadas da textura antes das coordenadas do vértice, no entanto, não parece assim com os VBOs.
Pergunta 1: Posso especificar dados de textura em um VBO? Qual parte dos dados?
Normalmente, quando eu faço um jogo em 2D, eu armazeno todos os meus objetos em instâncias de classes diferentes; quando minha rotina de desenho é exibida, basta desenhar os objetos que estão na tela. Com um ambiente 3D, seria um pouco mais difícil desenhar os objetos na tela, mas com um pouco de matemática, tenho certeza de que é possível.
Pergunta 2: Depois de descobrir quais objetos precisam ser renderizados, seria aceitável rapidamente enviar a esses objetos correspondentes uma solicitação de "aplicação" e aplicá-los eles mesmos? Ou há uma maneira melhor?
Pergunta 3: Se eu tenho um mapa completamente dinâmico, mas com objetos que não mudam com muita frequência, existem diretrizes sobre as diferenças de desempenho entre GL_STATIC_DRAW
e GL_DYNAMIC_DRAW
?
Pergunta final: Devo considerar usar listas de vértices? Ou os VBOs são apenas uma opção melhor?
glDrawElements
cada objeto - ou devo guardar tudo como triângulos e ter apenas um glDrawElements
? De qualquer maneira viável?