Fix OpenGL ES renderer not actually creating OpenGL ES contexts
This commit is contained in:
@@ -57,6 +57,11 @@ void HardwareRenderer::initializeGL()
|
|||||||
|
|
||||||
m_prog->bind();
|
m_prog->bind();
|
||||||
m_prog->setUniformValue("texture", 0);
|
m_prog->setUniformValue("texture", 0);
|
||||||
|
|
||||||
|
pclog("OpenGL vendor: %s\n", glGetString(GL_VENDOR));
|
||||||
|
pclog("OpenGL renderer: %s\n", glGetString(GL_RENDERER));
|
||||||
|
pclog("OpenGL version: %s\n", glGetString(GL_VERSION));
|
||||||
|
pclog("OpenGL shader language version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||||
}
|
}
|
||||||
|
|
||||||
void HardwareRenderer::paintGL() {
|
void HardwareRenderer::paintGL() {
|
||||||
|
@@ -33,17 +33,23 @@ private:
|
|||||||
QOpenGLShaderProgram* m_prog;
|
QOpenGLShaderProgram* m_prog;
|
||||||
QOpenGLTextureBlitter* m_blt;
|
QOpenGLTextureBlitter* m_blt;
|
||||||
public:
|
public:
|
||||||
|
enum class RenderType {
|
||||||
|
OpenGL,
|
||||||
|
OpenGLES,
|
||||||
|
};
|
||||||
void resizeGL(int w, int h) override;
|
void resizeGL(int w, int h) override;
|
||||||
void initializeGL() override;
|
void initializeGL() override;
|
||||||
void paintGL() override;
|
void paintGL() override;
|
||||||
HardwareRenderer(QWidget* parent = nullptr)
|
HardwareRenderer(QWidget* parent = nullptr, RenderType rtype = RenderType::OpenGL)
|
||||||
: QOpenGLWindow(QOpenGLWindow::NoPartialUpdate, parent->windowHandle()), QOpenGLFunctions()
|
: QOpenGLWindow(QOpenGLWindow::NoPartialUpdate, parent->windowHandle()), QOpenGLFunctions()
|
||||||
{
|
{
|
||||||
setMinimumSize(QSize(16, 16));
|
setMinimumSize(QSize(16, 16));
|
||||||
setFlags(Qt::FramelessWindowHint);
|
setFlags(Qt::FramelessWindowHint);
|
||||||
parentWidget = parent;
|
parentWidget = parent;
|
||||||
|
setRenderType(rtype);
|
||||||
|
|
||||||
m_context = new QOpenGLContext();
|
m_context = new QOpenGLContext();
|
||||||
|
m_context->setFormat(format());
|
||||||
m_context->create();
|
m_context->create();
|
||||||
}
|
}
|
||||||
~HardwareRenderer()
|
~HardwareRenderer()
|
||||||
@@ -52,10 +58,7 @@ public:
|
|||||||
if (m_blt) m_blt->destroy();
|
if (m_blt) m_blt->destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class RenderType {
|
|
||||||
OpenGL,
|
|
||||||
OpenGLES,
|
|
||||||
};
|
|
||||||
void setRenderType(RenderType type);
|
void setRenderType(RenderType type);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@@ -185,16 +185,14 @@ void RendererStack::switchRenderer(Renderer renderer) {
|
|||||||
this->createWinId();
|
this->createWinId();
|
||||||
auto hw = new HardwareRenderer(this);
|
auto hw = new HardwareRenderer(this);
|
||||||
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
||||||
hw->setRenderType(HardwareRenderer::RenderType::OpenGL);
|
|
||||||
current.reset(this->createWindowContainer(hw, this));
|
current.reset(this->createWindowContainer(hw, this));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Renderer::OpenGLES:
|
case Renderer::OpenGLES:
|
||||||
{
|
{
|
||||||
this->createWinId();
|
this->createWinId();
|
||||||
auto hw = new HardwareRenderer(this);
|
auto hw = new HardwareRenderer(this, HardwareRenderer::RenderType::OpenGLES);
|
||||||
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
||||||
hw->setRenderType(HardwareRenderer::RenderType::OpenGLES);
|
|
||||||
current.reset(this->createWindowContainer(hw, this));
|
current.reset(this->createWindowContainer(hw, this));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user