Стратегия совместного использования ресурсов OpenGL

Я ' m создавая приложение, подобное CAD (основанное на Qt), это будет многодокументный интерфейс, и каждый документ будет содержать около 5 окон просмотра (производных от QGLWidget). Таким образом, мне нужно, чтобы мой плоский шейдер был доступен для всего приложения, а затем 3D-ресурсы (модели, хранящиеся как VBO) должны быть разделены для каждого документа, то есть в 5 окнах просмотра.

Я думал, пока я делился вокруг шейдера Программа и адреса VBO GLuint будут работать автоматически - это не так. Я думаю, поскольку у каждого окна просмотра / контекста есть свое собственное адресное пространство на видеокарте, если кто-то знает, пожалуйста, сообщите!

Я хотел бы, чтобы шейдер скомпилировался при запуске приложения, но это оказывается трудным, так как мне нужен действующий QGLWidget чтобы заранее привести OpenGL в допустимое состояние. Но поскольку мне нужно поделиться виджетами QGLWidgets (через их конструктор), чтобы они совместно использовали ресурсы, один должен быть создан и показан до того, как другие могут быть созданы. Но это крайне непрактично, так как сразу несколько представлений должны быть показаны пользователю.

Это должно быть проще, чем я разбираюсь, потому что это вряд ли новаторский материал, но я действительно борюсь - может ли кто-нибудь указать мне в правильном направлении ?

Спасибо, Кэм

6
задан cmannett85 5 December 2010 в 19:20
поделиться