#include "opengl_checker.h"

#include "QsLog.h"

OpenGLChecker::OpenGLChecker()
{

}

bool OpenGLChecker::hasCompatibleOpenGLVersion()
{
    QOpenGLContext * openGLContext = new QOpenGLContext();
    openGLContext->create();

    if(!openGLContext->isValid())
        return false;

    QSurfaceFormat format = openGLContext->format();

    int majorVersion = format.majorVersion();
    int minorVersion = format.minorVersion();

    delete openGLContext;

    QLOG_INFO() << QString("OpenGL version %1.%2").arg(majorVersion).arg(minorVersion);

    if(format.renderableType() != QSurfaceFormat::OpenGL) //Desktop OpenGL
        return false;

#ifdef Q_OS_WIN //TODO check Qt version, and set this values depending on the use of QOpenGLWidget or QGLWidget
    int majorTargetVersion = 1;
    int minorTargetVersion = 5;
#else
    int majorTargetVersion = 2;
    int minorTargetVersion = 1;
#endif

    if(majorVersion < majorTargetVersion)
        return false;
    if(majorVersion == majorTargetVersion && minorVersion < minorTargetVersion)
        return false;

    return true;
}