diff --git a/src/WallpaperEngine/Application/CWallpaperApplication.cpp b/src/WallpaperEngine/Application/CWallpaperApplication.cpp index 9f43f89..ade1f2c 100644 --- a/src/WallpaperEngine/Application/CWallpaperApplication.cpp +++ b/src/WallpaperEngine/Application/CWallpaperApplication.cpp @@ -246,8 +246,15 @@ void CWallpaperApplication::takeScreenshot (const std::filesystem::path& filenam // read the viewport data into the pixel buffer glPixelStorei (GL_PACK_ALIGNMENT, 1); - glReadnPixels (viewport->viewport.x, viewport->viewport.y, viewport->viewport.z, viewport->viewport.w, GL_RGB, - GL_UNSIGNED_BYTE, bufferSize, buffer); + // 4.5 supports glReadnPixels, anything older doesn't... + if (GLEW_VERSION_4_5) { + glReadnPixels (viewport->viewport.x, viewport->viewport.y, viewport->viewport.z, viewport->viewport.w, + GL_RGB, GL_UNSIGNED_BYTE, bufferSize, buffer); + } else { + // fallback to old version + glReadPixels (viewport->viewport.x, viewport->viewport.y, viewport->viewport.z, viewport->viewport.w, + GL_RGB, GL_UNSIGNED_BYTE, buffer); + } GLenum error = glGetError(); diff --git a/src/WallpaperEngine/Render/Drivers/CGLFWOpenGLDriver.cpp b/src/WallpaperEngine/Render/Drivers/CGLFWOpenGLDriver.cpp index 48fffb1..f5f2680 100644 --- a/src/WallpaperEngine/Render/Drivers/CGLFWOpenGLDriver.cpp +++ b/src/WallpaperEngine/Render/Drivers/CGLFWOpenGLDriver.cpp @@ -133,8 +133,14 @@ void CGLFWOpenGLDriver::dispatchEventQueue () { // read the full texture into the image if (this->m_output->haveImageBuffer ()) { - glReadnPixels (0, 0, this->m_output->getFullWidth (), this->m_output->getFullHeight (), GL_BGRA, - GL_UNSIGNED_BYTE, this->m_output->getImageBufferSize(), this->m_output->getImageBuffer ()); + // 4.5 supports glReadnPixels, anything older doesn't... + if (GLEW_VERSION_4_5) { + glReadnPixels (0, 0, this->m_output->getFullWidth (), this->m_output->getFullHeight (), GL_BGRA, + GL_UNSIGNED_BYTE, this->m_output->getImageBufferSize (), this->m_output->getImageBuffer ()); + } else { + // fallback to old version + glReadPixels (0, 0, this->m_output->getFullWidth (), this->m_output->getFullHeight (), GL_BGRA, GL_UNSIGNED_BYTE, this->m_output->getImageBuffer ()); + } GLenum error = glGetError();