0
我正在C++中進行2D遊戲,並在OpenGL上繪製了一個簡單的渲染圖層。我的GLSL Shader對象/包裝器應該封裝加載/設置VertexArrayObject嗎?
我有一個GLSL着色器和着色器程序的包裝器,這些包裝器將着色器對象封裝到C++類中,並自動處理加載/編譯/鏈接和使用着色器程序。
VertexArrayObjects,在我看來,基本上都是配置設置的集合與特定ShaderProgram使用。
我的問題是:我是否應該將VAO封裝在ShaderProgram對象內或Sprite對象內? VAO是以每個着色器爲基礎進行更改還是需要針對每種可繪製對象的新VAO?如果是後者,我是否需要一個VAO來繪製所有的精靈(每個包含4個頂點,一個位置/方向等),還是每個精靈對象在遊戲中都有一個VAO?
真正唯一一次VAO可能與特定GLSL程序相關的是將緩衝區指針匹配到程序所需的特定佈局。如果你用屬性位置等的類似約定編寫所有程序,則不需要任何詳細說明。 –