mirror of https://github.com/WerWolv/ImHex
fix: OpenGL detection not working correctly
This commit is contained in:
parent
ba71a300ec
commit
5c2309bcf7
|
|
@ -58,18 +58,18 @@ namespace hex::init {
|
||||||
this->loadAssets();
|
this->loadAssets();
|
||||||
|
|
||||||
{
|
{
|
||||||
auto glVendor = reinterpret_cast<const char *>(glGetString(GL_VENDOR));
|
auto glVendorString = reinterpret_cast<const char *>(glGetString(GL_VENDOR));
|
||||||
auto glRenderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
auto glRendererString = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
||||||
auto glVersion = reinterpret_cast<const char *>(glGetString(GL_VERSION));
|
auto glVersionString = reinterpret_cast<const char *>(glGetString(GL_VERSION));
|
||||||
auto glShadingLanguageVersion = reinterpret_cast<const char *>(glGetString(GL_SHADING_LANGUAGE_VERSION));
|
auto glShadingLanguageVersion = reinterpret_cast<const char *>(glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||||
|
|
||||||
log::debug("OpenGL Vendor: '{}'", glVendor);
|
log::debug("OpenGL Vendor: '{}'", glVendorString);
|
||||||
log::debug("OpenGL Renderer: '{}'", glRenderer);
|
log::debug("OpenGL Renderer: '{}'", glRendererString);
|
||||||
log::debug("OpenGL Version: '{}'", glVersion);
|
log::debug("OpenGL Version: '{}'", glVersionString);
|
||||||
log::debug("OpenGL Shading Language Version: '{}'", glShadingLanguageVersion);
|
log::debug("OpenGL Shading Language Version: '{}'", glShadingLanguageVersion);
|
||||||
|
|
||||||
ImHexApi::System::impl::setGPUVendor(glVendor);
|
ImHexApi::System::impl::setGPUVendor(glVendorString);
|
||||||
ImHexApi::System::impl::setGLRenderer(glRenderer);
|
ImHexApi::System::impl::setGLRenderer(glRendererString);
|
||||||
|
|
||||||
{
|
{
|
||||||
int glVersionMajor = 0, glVersionMinor = 0;
|
int glVersionMajor = 0, glVersionMinor = 0;
|
||||||
|
|
@ -77,6 +77,22 @@ namespace hex::init {
|
||||||
glGetIntegerv(GL_MINOR_VERSION, &glVersionMinor);
|
glGetIntegerv(GL_MINOR_VERSION, &glVersionMinor);
|
||||||
ImHexApi::System::impl::setGLVersion(SemanticVersion(glVersionMajor, glVersionMinor, 0));
|
ImHexApi::System::impl::setGLVersion(SemanticVersion(glVersionMajor, glVersionMinor, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
#if !defined(OS_MACOS)
|
||||||
|
const static auto MinGLVersion = SemanticVersion(3, 1, 0);
|
||||||
|
#else
|
||||||
|
const static auto MinGLVersion = SemanticVersion(3, 2, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const auto &glVersion = ImHexApi::System::getGLVersion();
|
||||||
|
if (glVersion < MinGLVersion) {
|
||||||
|
showErrorMessageBox(fmt::format("ImHex requires at least OpenGL {} to run but your system seems to only support up to OpenGL {}!\n\nTry upgrading your GPU drivers or try one of the NoGPU releases to use software rendering instead.", MinGLVersion.get(false), glVersion.get()));
|
||||||
|
this->exitImGui();
|
||||||
|
this->exitGLFW();
|
||||||
|
std::exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -457,19 +473,12 @@ namespace hex::init {
|
||||||
|
|
||||||
// Configure used OpenGL version
|
// Configure used OpenGL version
|
||||||
#if defined(OS_MACOS)
|
#if defined(OS_MACOS)
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
|
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
|
||||||
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
|
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
|
||||||
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
|
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
|
||||||
#else
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Make splash screen non-resizable, undecorated and transparent
|
// Make splash screen non-resizable, undecorated and transparent
|
||||||
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
||||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
|
|
||||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
||||||
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
|
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
|
||||||
glfwWindowHint(GLFW_FLOATING, GLFW_FALSE);
|
glfwWindowHint(GLFW_FLOATING, GLFW_FALSE);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue