Play-/Source/ui_unix/GSH_OpenGLQt.cpp
2016-09-06 00:13:25 +01:00

48 lines
928 B
C++

#include "GSH_OpenGLQt.h"
#include <QWindow>
#include <QOpenGLContext>
CGSH_OpenGLQt::CGSH_OpenGLQt(QWindow* renderWindow)
: m_renderWindow(renderWindow)
{
}
CGSH_OpenGLQt::~CGSH_OpenGLQt()
{
}
CGSH_OpenGL::FactoryFunction CGSH_OpenGLQt::GetFactoryFunction(QWindow* renderWindow)
{
return [renderWindow] () { return new CGSH_OpenGLQt(renderWindow); };
}
void CGSH_OpenGLQt::InitializeImpl()
{
m_context = new QOpenGLContext();
m_context->setFormat(m_renderWindow->requestedFormat());
bool succeeded = m_context->create();
Q_ASSERT(succeeded);
succeeded = m_context->makeCurrent(m_renderWindow);
Q_ASSERT(succeeded);
auto result = glewInit();
Q_ASSERT(result == GLEW_OK);
CGSH_OpenGL::InitializeImpl();
}
void CGSH_OpenGLQt::ReleaseImpl()
{
CGSH_OpenGL::ReleaseImpl();
delete m_context;
}
void CGSH_OpenGLQt::PresentBackbuffer()
{
m_context->swapBuffers(m_renderWindow);
}