У меня есть QGraphicsScene, в который я добавляю QGraphicsItem. Внутри QGraphicsItem я отрисовываю треугольник, использованный в примере привет треугольника OpenGL ES 2.0. Проблема в том, что если я создаю и компилирую шейдеры в любом месте, кроме функции QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
, они не компилируются. Я знаю, что у вас должен быть активен контекст рендеринга GL, но разве этого не происходит, когда я устанавливаю свой видовой экран в GLWidget? Я пробовал разные вещи, такие как компиляция их в конструкторе QGraphicsItem или в QGraphicsScene и установка QGraphicsItem в качестве родителя (что я узнал, что это очень глупые вещи), но (очевидно) ничего не работает. Мне показалось наиболее логичным создать функцию initShaders () внутри класса QGraphicsItem и вызывать ее после создания элемента в моей сцене, но это также не сработало.