Fix OpenGL ES renderer not actually creating OpenGL ES contexts

This commit is contained in:
Cacodemon345
2021-12-26 11:52:50 +06:00
parent 22471629d8
commit 33d2844de6
3 changed files with 14 additions and 8 deletions

View File

@@ -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() {

View File

@@ -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:

View File

@@ -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;
}