В основном это вопрос документации. Я надеюсь, что это правильное место, а не, например, программисты или 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 представляет собой один большой беспорядок в глобальных данных)Ответы:
Итак, я попытался нарисовать свою собственную диаграмму. Он не является исчерпывающим, в основном потому, что я не интересуюсь некоторыми вещами прямо сейчас, а также потому, что я хотел, чтобы он был читабельным (даже если это не формально определенный график, я думаю, что он должен быть легко читаемым).
Кроме того, поскольку, как представляется, это представляет интерес для некоторых людей, я хочу поделиться им здесь, чтобы получить обратную связь и проверить ее. Я использовал OpenGL wiki в качестве справочника, чтобы проверить правильность, но, возможно, я допустил ошибки.
Кроме того, если предоставленной информации вам недостаточно или я упустил важные отношения, которые стоит включить в диаграмму, не стесняйтесь предлагать ее, и я постараюсь обновлять ее.
Опять же, не стесняйтесь сообщать об ошибках, проблемах или предложениях, они горячо приветствуются.
РЕДАКТИРОВАТЬ
источник