Це здебільшого питання документації. Я сподіваюсь, що це правильне місце, щоб запитати, а не, наприклад, програмістів або stackoverflow.
Я не читав специфікацію OpenGL, але з книг (Червоної книги) та різних навчальних посібників я не можу правильно зрозуміти, як взаємодіють і співвідносяться різні об'єкти та частини API.
Наприклад, я знаю, що якщо VAO пов'язаний, то зв'язування VBO та встановлення атрибута призведе до того, що VBO буде пов'язаний з VAO.
Але об’єктів багато, їх відношення може відрізнятися. Наприклад, VAO абсолютно не пов'язаний з поточною програмою затінення, але результат операцій малювання може залежати від обох.
Серед усіх різних компонентів OpenGL я бачу такі відносини, як A-bind-to-B або A-and-B-are-used-by-C. Усі ці відносини узгоджуються у визначенні того, як можна змінити стан контексту, як можна змінити речі, як зберегти речі разом і оптимізувати.
Я шукаю ресурси, які пояснюють саме ці відносини. Як і UML-діаграма, графік або навіть текстовий документ, який не фокусується на викликах, але компактно описує, як взаємодіють різні компоненти OpenGL та співвідносяться один з одним.
Ви знаєте, де знайти такий ресурс?
glVertexAttribPointer()
. Діаграма для об’єктів OpenGL була б досить дрібною і простою, насправді в OpenGL існує небагато різних об'єктів. VAO використовують буфери для атрибутів. Текстури буфера підтримуються буферами. Каркасні рамки мають вкладені текстури. Команди малювання використовують поточний VAO, поточну програму, поточний кадрбуфер, поточні параметри вибірки та поточний буфер індексів / непрямий буфер. Ви, ймовірно, самі могли намалювати схему.
;)
(весь API - це величезна безлад глобальних даних)