Может кто-нибудь рассказать мне о, казалось бы, бесполезно усложненных единообразных буферах? Я прочитал раздел в OpenGL Superbible 5, я просмотрел несколько примеров в блогах, прочитал официальную спецификацию и до сих пор не понимаю.
В частности, во всех примерах, похоже, для начала требуется программа шейдера, чтобы изначально настроить единый буфер с помощью glGetActiveUniformsiv. Я не понимаю этого. Почему интерфейс не позволяет вам определять структуру, не обращаясь к шейдерной программе, проверяя форматы буфера / с программой во время соединения?
Во-вторых, если я получу структуру структуры из одной программы, предполагая, что структура структуры одинакова для всех программ, которые используют набор униформ, будет ли структура иметь одинаковые смещения, размеры данных и т. Д.? Я бы предположил, что так.
В-третьих, я не понимаю обязательных пунктов. Я должен вызвать glBindBufferBase с индексом, а затем вызвать glUniformBlockBinding с индексом блока и индексом, который я передал в glBindBufferBase. У меня проблемы с визуализацией, что именно здесь происходит. В Superbible нет ясности, как и в спецификации и в образцах, которые я видел.