2014-11-03 4 views
0

В настоящее время в моей функции рендеринга я использую VAO (объект вершинного массива) и четыре объекта VBO (объект буфера вершин), связанный с этим VAO.Переключение между vbo привязано к одному vao

для каждого VBO, я связываю с ВАО

glGenVertexArrays (1, & vaoID [0]); // Create our Vertex Array Object 
glBindVertexArray (vaoID [0]); // Bind our Vertex Array Object so we can use it 

int i = 0; 
for (i = 0; i <4, ++i) 
{ 
glGenBuffers (1,vboID [i]); // Generate Vertex Buffer Object 
glBindBuffer (GL_ARRAY_BUFFER, vboID [i]); // Bind Vertex Buffer Object 
glBufferData (GL_ARRAY_BUFFER, 18 * sizeof (GLfloat) vertices, GL_STATIC_DRAW); 

glVertexAttribPointer ((GLuint) 0, 3, GL_FLOAT, GL_FALSE, 0, 0); 
    } 

glEnableVertexAttribArray (0); // Disable Vertex Array Object 
glBindVertexArray (0); // Disable Vertex Buffer Object 

Тогда в моей визуализации функции (псевдокод), для каждого кадра:

glBindVertexArray (vaoID [0]); 

// here, I need to draw the four VBO, but only draws the first 

glBindVertexArray (0); 

Я знаю, что я могу поставить всю геометрию в одиночный VBO, но бывают случаи, когда его размер превышает 5 Мб, и это может привести (возможно) к тому, что он не будет размещен на графическом процессоре.

Как я могу переключить все привязанные VBO, чтобы нарисовать их?

ответ

1

3 балла:

  1. вы можете генераторных все буферы сразу за пределами цикла:

    glGenBuffers (4,&vboID[0]); 
    
  2. вы не инициализирует данные в РВО (что я могу видеть)

  3. необходимо снова установить петлю через vbos и установить glVertexAttribPointer:

    glBindVertexArray (vaoID [0]); 
    for(int i = 0; i < 4; i++){ 
        glBindBuffer (GL_ARRAY_BUFFER, vboID [i]); 
        glVertexAttribPointer ((GLuint) 0, 3, GL_FLOAT, GL_FALSE, 0, 0); 
        //drawArrays 
    } 
    glBindVertexArray (0); 
    
+0

спасибо «храповой урод», теперь я спрашиваю: зачем использовать VAO? , если я должен связать каждое vbo снова в функции рендеринга для каждого кадра? В противном случае вы можете дать мне пример того, как это приведет к тому, что несколько vbo связаны с одним вайо ?, Спасибо! – user2303826

Смежные вопросы