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