Я использую тот же код с Qt 5.5
class MyGlWidget : public QOpenGLWidget
{
Q_OBJECT
public:
explicit MyGlWidget(QWidget* parent = 0);
virtual ~MyGlWidget();
protected:
virtual void initializeGL()
{
QOpenGLContext* context = QOpenGLContext::currentContext();
QSurfaceFormat format = context->format();
format.setVersion(2,1);
context->setFormat(format);
...
}
virtual void paintGL() { ... }
И в этом случае «формат» это:
QSurfaceFormat(version 2.1, options QFlags(0x4), depthBufferSize 24,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8,
stencilBufferSize 8, samples 0, swapBehavior 2, swapInterval 1, profile 2)
Но в Qt 5.7 «формат» это:
QSurfaceFormat(version 2.1, options QFlags(0x4), depthBufferSize -1,
redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize -1,
stencilBufferSize -1, samples -1, swapBehavior 2, swapInterval 1, profile 0)
Таким образом, текстуры с альфа-каналом рисуются некорректно.
Я попытался установить формат с правильными параметрами вручную, но это не вступило в силу.
Задача ещё не решена.
Других решений пока нет …