Я создаю CAD-подобное приложение (на основе Qt), это будет интерфейс с несколькими документами, и каждый документ будет содержать около 5 окон просмотра (полученных из QGLWidget). Таким образом, мне нужно, чтобы мой плоский шейдер был общим для всего приложения, а затем 3D-ресурсы (модели, хранящиеся в виде VBO) были общими для каждого документа, то есть для 5 окон просмотра.
Я думал, что пока я делюсь шейдерной программой и адресами VBO GLuint, все будет работать автоматически, но это не так. Я думаю, потому что у каждого окна просмотра/контекста есть свое адресное пространство на видеокарте, если кто знает лучше, сообщите!
Я хотел бы, чтобы шейдер скомпилировался при запуске приложения, но это оказалось сложно, так как мне нужен действительный QGLWidget, чтобы заранее перевести OpenGL в действительное состояние. Но так как мне нужно совместно использовать QGLWidgets (через их конструктор), чтобы они совместно использовали ресурсы, необходимо создать и показать один из них, прежде чем можно будет создать экземпляр других. Но это крайне непрактично, поскольку пользователю нужно одновременно показывать несколько представлений.
Это должно быть проще, чем я понимаю, потому что это вряд ли новаторские вещи, но я действительно борюсь - может ли кто-нибудь указать мне правильное направление?
Спасибо, Кэм