8
代碼的核心(顯示紅色矩形):繪圖VBO與調用glDrawArrays工作在OpenGL 2.1但不在OpenGL 3.X
//bind program, set uniforms, bind vbo
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0,0);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(0);
//unbind vbo, unbind program
當我將上下文切換到OpenGL的3.x的這個代碼將停止工作(我只能看到背景的顏色),但是當我用上面的代碼以相同的方式初始化VAO,然後我綁定VAO並調用glDrawArrays時,它就可以工作。
可能是什麼問題?如何在不使用VAO的情況下繪製VBO?
(着色器是非常簡單的,VS僅mulitplies矩陣和ps輸出紅色)
我認爲VAO的是可選的。 (我的代碼不會引發任何錯誤)。那麼我應該如何使用VAO? 1 VAO = 1型號? – chris
暫時我會用一個全球VAO。 – chris
您可以在一個VAO中收集多個模型。我通常會收集類似屬性的網格,這些網格總是在VAO中一起出現。例如,使用相同着色器的遊戲引擎地圖的所有靜態元素都可以在一個VAO中收集。按照着色器和材質屬性排序可能是最好的排序標準,我會說。 – datenwolf