В основном это вопрос документации. Я надеюсь, что это правильное место, а не, например, программисты или stackoverflow.
Я не читал спецификацию OpenGL, но из книг (Красная книга) и различных руководств я не могу правильно понять, как различные объекты и части API взаимодействуют и взаимосвязаны.
Например, я знаю, что если VAO привязан, то привязка VBO и установка атрибута приведут к привязке VBO к VAO.
Но объектов много, их отношение может различаться. Например, VAO совершенно не связана с текущей программой затенения, но результат операций рисования может зависеть от них обоих.
Среди всех различных компонентов OpenGL я вижу некоторые отношения, такие как A-binds-to-B или A-and-B-are-by-by-C. Все эти отношения сходятся в определении того, как можно изменить состояние контекста, как можно что-то изменить, как можно сохранить вещи вместе и оптимизировать.
Я ищу ресурсы, объясняющие именно эти отношения. Как и диаграмма UML, график или даже текстовый документ, который не фокусируется на вызовах, но в сжатой форме описывает, как различные компоненты OpenGL взаимодействуют и связаны друг с другом.
Вы знаете, где найти такой ресурс?
glVertexAttribPointer()
. Диаграмма для объектов OpenGL была бы довольно поверхностной и простой, на самом деле в OpenGL всего несколько различных объектов. VAO используют буферы для атрибутов. Буферные текстуры поддерживаются буферами. Кадровые буферы имеют текстурные вложения. Команды рисования используют текущий VAO, текущую программу, текущий кадровый буфер, текущие настройки сэмплера и текущий индексный буфер / косвенный буфер. Вы могли бы, вероятно, нарисовать диаграмму самостоятельно.
;)
(весь API представляет собой один большой беспорядок в глобальных данных)