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->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() {
|
||||
|
@@ -33,17 +33,23 @@ private:
|
||||
QOpenGLShaderProgram* m_prog;
|
||||
QOpenGLTextureBlitter* m_blt;
|
||||
public:
|
||||
enum class RenderType {
|
||||
OpenGL,
|
||||
OpenGLES,
|
||||
};
|
||||
void resizeGL(int w, int h) override;
|
||||
void initializeGL() override;
|
||||
void paintGL() override;
|
||||
HardwareRenderer(QWidget* parent = nullptr)
|
||||
HardwareRenderer(QWidget* parent = nullptr, RenderType rtype = RenderType::OpenGL)
|
||||
: QOpenGLWindow(QOpenGLWindow::NoPartialUpdate, parent->windowHandle()), QOpenGLFunctions()
|
||||
{
|
||||
setMinimumSize(QSize(16, 16));
|
||||
setFlags(Qt::FramelessWindowHint);
|
||||
parentWidget = parent;
|
||||
setRenderType(rtype);
|
||||
|
||||
m_context = new QOpenGLContext();
|
||||
m_context->setFormat(format());
|
||||
m_context->create();
|
||||
}
|
||||
~HardwareRenderer()
|
||||
@@ -52,10 +58,7 @@ public:
|
||||
if (m_blt) m_blt->destroy();
|
||||
}
|
||||
|
||||
enum class RenderType {
|
||||
OpenGL,
|
||||
OpenGLES,
|
||||
};
|
||||
|
||||
void setRenderType(RenderType type);
|
||||
|
||||
public slots:
|
||||
|
@@ -185,16 +185,14 @@ void RendererStack::switchRenderer(Renderer renderer) {
|
||||
this->createWinId();
|
||||
auto hw = new HardwareRenderer(this);
|
||||
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
||||
hw->setRenderType(HardwareRenderer::RenderType::OpenGL);
|
||||
current.reset(this->createWindowContainer(hw, this));
|
||||
break;
|
||||
}
|
||||
case Renderer::OpenGLES:
|
||||
{
|
||||
this->createWinId();
|
||||
auto hw = new HardwareRenderer(this);
|
||||
auto hw = new HardwareRenderer(this, HardwareRenderer::RenderType::OpenGLES);
|
||||
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
|
||||
hw->setRenderType(HardwareRenderer::RenderType::OpenGLES);
|
||||
current.reset(this->createWindowContainer(hw, this));
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user