From f2a1ba3cda4509c9628895ea716277110f16a9f9 Mon Sep 17 00:00:00 2001 From: LaurentGom Date: Sat, 2 Jan 2010 13:42:32 +0000 Subject: [PATCH] Improved the anti-aliasing level selection algorithm git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1316 4e206d99-4929-0410-ac5d-dfc041789085 --- src/SFML/Window/Win32/ContextWGL.cpp | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/SFML/Window/Win32/ContextWGL.cpp b/src/SFML/Window/Win32/ContextWGL.cpp index 5a902282..eb835dc4 100644 --- a/src/SFML/Window/Win32/ContextWGL.cpp +++ b/src/SFML/Window/Win32/ContextWGL.cpp @@ -174,24 +174,12 @@ void ContextWGL::CreateContext(ContextWGL* shared, unsigned int bitsPerPixel, co UINT nbFormats; float floatAttributes[] = {0, 0}; bool isValid = wglChoosePixelFormatARB(myDeviceContext, intAttributes, floatAttributes, sizeof(formats) / sizeof(*formats), formats, &nbFormats) != 0; - if (!isValid || (nbFormats == 0)) + while ((!isValid || (nbFormats == 0)) && mySettings.AntialiasingLevel > 0) { - if (mySettings.AntialiasingLevel > 2) - { - // No format matching our needs : reduce the multisampling level - std::cerr << "Failed to find a pixel format supporting " - << mySettings.AntialiasingLevel << " antialiasing levels ; trying with 2 levels" << std::endl; - - mySettings.AntialiasingLevel = intAttributes[11] = 2; - isValid = wglChoosePixelFormatARB(myDeviceContext, intAttributes, floatAttributes, sizeof(formats) / sizeof(*formats), formats, &nbFormats) != 0; - } - - if (!isValid || (nbFormats == 0)) - { - // Cannot find any pixel format supporting multisampling ; disabling antialiasing - std::cerr << "Failed to find a pixel format supporting antialiasing ; antialiasing will be disabled" << std::endl; - mySettings.AntialiasingLevel = 0; - } + // Decrease the antialiasing level until we find a valid one + mySettings.AntialiasingLevel--; + intAttributes[11] = mySettings.AntialiasingLevel; + isValid = wglChoosePixelFormatARB(myDeviceContext, intAttributes, floatAttributes, sizeof(formats) / sizeof(*formats), formats, &nbFormats) != 0; } // Get the best format among the returned ones