Berikut ini adalah penjelasan yang sederhana namun efektif, pada dasarnya objek penyangga memiliki informasi yang dapat diartikan sebagai hanya bit data mentah, yang dengan sendirinya tidak berarti apa-apa, sehingga MURNI data yang dapat dilihat dengan cara apa pun
i.e float vbo[]={1.0,2.0,34.0...}
dan cara OpenGL dirancang untuk bekerja adalah bahwa Anda harus MENGEMBANGKAN data apa yang akan Anda sampaikan ke berbagai shader terlihat seperti ke shader
di mana Anda juga harus menentukan bagaimana ia akan membaca data itu, apa formatnya, dan apa yang harus dilakukan dengannya dan bagaimana itu akan digunakan dan untuk apa, semua informasi ini disimpan dalam VAO
misalnya Anda dapat mendeklarasikan data yang disimpan dalam array seperti ini float vbo = {11.0,2.0,3.0,4.0}
apa yang diperlukan selanjutnya pada titik ini adalah bagaimana menafsirkan data itu dari VBO di VAO, dan apa artinya itu sebagai berikut
VAO dapat diatur untuk membaca 2 float per vertex (yang akan membuatnya 2 vektor dengan dua dimensi x, y) atau Anda dapat memberitahu vao untuk menafsirkannya sebagai 1 vektor dengan 4 dimensi yaitu x, y, z, w dll
tetapi juga atribut lain dari data yang didefinisikan dan disimpan dalam VAO seperti format data (meskipun Anda mendeklarasikan array float, Anda dapat memberi tahu shader untuk membacanya sebagai integer, dengan tentu saja sistem mengubah data mentah di proses dari float ke integer dan memiliki seperangkat aturan sendiri apa yang harus dilakukan dalam keadaan seperti itu)
Jadi pada dasarnya VBO adalah datanya, dan VAO menyimpan cara menginterpretasikan data itu, karena shader dan server OpenGL dirancang untuk menjadi sangat usil dan perlu tahu segalanya sebelum memutuskan bagaimana memprosesnya dan apa yang harus dilakukan dengan itu dan di mana untuk meletakkannya
tentu saja itu tidak benar-benar usil, itu sebenarnya terlihat paling efisien karena perlu menyimpan data itu pada memori server grafis sehingga mendapatkan pemrosesan yang paling efisien dan tercepat (kecuali ia memutuskan bahwa itu tidak perlu melakukan ini jika data tidak akan diproses sedemikian rupa dan digunakan untuk beberapa informasi lain yang tidak sering diakses), dan karenanya mengapa perincian tentang apa yang harus dilakukan dengan data dan bagaimana memprosesnya diperlukan untuk disimpan dalam VAO, jadi VAO seperti header dan VBO seperti data mentah murni yang digunakan dan didefinisikan header (dalam hal ini beralih ke atribut vertex shader) dengan pengecualian bahwa VBO tidak terbatas hanya untuk digunakan oleh satu VAO, itu dapat digunakan dan digunakan kembali dan terikat pada banyak VAO misalnya:
apa yang dapat Anda lakukan adalah Anda dapat mengikat satu objek buffer ke VAO1 dan juga (secara terpisah) mengikat objek buffer yang sama ke VAO2 dengan masing-masing menginterpretasikannya secara berbeda sehingga jika shader Anda di mana memproses data, tergantung pada VAO mana yang terikat itu akan memproses data mentah yang sama secara berbeda ke frambuffer (menggambar piksel ke jendela) menghasilkan tampilan yang berbeda dari data yang sama yang akan didasarkan pada bagaimana Anda mendefinisikan penggunaannya dalam VAO