/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2009 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ #ifndef OSGVIEWER_GRAPHICSHANDLEWIN32 #define OSGVIEWER_GRAPHICSHANDLEWIN32 1 #include // Fallback if not correctly detected in CMake macro #ifndef _WIN32_WINNT //#define _WIN32_WINNT 0x0A00 // Windows 10 //#define _WIN32_WINNT 0x0603 // Windows 8.1 //#define _WIN32_WINNT 0x0602 // Windows 8 //#define _WIN32_WINNT 0x0601 // Windows 7 //#define _WIN32_WINNT 0x0600 // Windows Server 2008 //#define _WIN32_WINNT 0x0600 // Windows Vista //#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 //#define _WIN32_WINNT 0x0501 // Windows Server 2003, Windows XP #define _WIN32_WINNT 0x0500 // Windows NT #endif #include #include "Win32GWUtils" namespace osgViewer { /** Class to encapsulate platform-specific OpenGL context handle variables. * Derived osg::GraphicsContext classes can inherit from this class to * share OpenGL resources.*/ #if defined(OSG_USE_EGL) class OSGVIEWER_EXPORT GraphicsHandleWin32 { public: GraphicsHandleWin32() : _hwnd(0), _hdc(0) {} /** Set native window.*/ inline void setHWND(HWND hwnd) { _hwnd = hwnd; } /** Get native window.*/ inline HWND getHWND() const { return _hwnd; } /** Set device context.*/ inline void setHDC(HDC hdc) { _hdc = hdc; } /** Get device context.*/ inline HDC getHDC() const { return _hdc; } /** Set native EGL graphics context.*/ inline void setEGLContext(const EGL::ContextInfo& eglContextInfo) { _eglContextInfo = eglContextInfo; } /** Get native EGL graphics context.*/ inline const EGL::ContextInfo& getEGLContext() const { return _eglContextInfo; } protected: HWND _hwnd; HDC _hdc; EGL::ContextInfo _eglContextInfo; }; #else class OSGVIEWER_EXPORT GraphicsHandleWin32 { public: GraphicsHandleWin32() : _hwnd(0), _hdc(0), _hglrc(0) {} /** Set native window.*/ inline void setHWND(HWND hwnd) { _hwnd = hwnd; } /** Get native window.*/ inline HWND getHWND() const { return _hwnd; } /** Set device context.*/ inline void setHDC(HDC hdc) { _hdc = hdc; } /** Get device context.*/ inline HDC getHDC() const { return _hdc; } /** Set native OpenGL graphics context.*/ inline void setWGLContext(HGLRC hglrc) { _hglrc = hglrc; } /** Get native OpenGL graphics context.*/ inline HGLRC getWGLContext() const { return _hglrc; } protected: HWND _hwnd; HDC _hdc; HGLRC _hglrc; }; #endif } // Definitions required to create an OpenGL pixel format, from the WGL_ARB_pixel_format specification document. // See http://www.opengl.org/registry/specs/ARB/wgl_pixel_format.txt #ifndef WGL_ARB_pixel_format #define WGL_ARB_pixel_format 1 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 #define WGL_DRAW_TO_WINDOW_ARB 0x2001 #define WGL_DRAW_TO_BITMAP_ARB 0x2002 #define WGL_ACCELERATION_ARB 0x2003 #define WGL_NEED_PALETTE_ARB 0x2004 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 #define WGL_SWAP_METHOD_ARB 0x2007 #define WGL_NUMBER_OVERLAYS_ARB 0x2008 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009 #define WGL_TRANSPARENT_ARB 0x200A #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B #define WGL_SHARE_DEPTH_ARB 0x200C #define WGL_SHARE_STENCIL_ARB 0x200D #define WGL_SHARE_ACCUM_ARB 0x200E #define WGL_SUPPORT_GDI_ARB 0x200F #define WGL_SUPPORT_OPENGL_ARB 0x2010 #define WGL_DOUBLE_BUFFER_ARB 0x2011 #define WGL_STEREO_ARB 0x2012 #define WGL_PIXEL_TYPE_ARB 0x2013 #define WGL_COLOR_BITS_ARB 0x2014 #define WGL_RED_BITS_ARB 0x2015 #define WGL_RED_SHIFT_ARB 0x2016 #define WGL_GREEN_BITS_ARB 0x2017 #define WGL_GREEN_SHIFT_ARB 0x2018 #define WGL_BLUE_BITS_ARB 0x2019 #define WGL_BLUE_SHIFT_ARB 0x201A #define WGL_ALPHA_BITS_ARB 0x201B #define WGL_ALPHA_SHIFT_ARB 0x201C #define WGL_ACCUM_BITS_ARB 0x201D #define WGL_ACCUM_RED_BITS_ARB 0x201E #define WGL_ACCUM_GREEN_BITS_ARB 0x201F #define WGL_ACCUM_BLUE_BITS_ARB 0x2020 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 #define WGL_DEPTH_BITS_ARB 0x2022 #define WGL_STENCIL_BITS_ARB 0x2023 #define WGL_AUX_BUFFERS_ARB 0x2024 #define WGL_NO_ACCELERATION_ARB 0x2025 #define WGL_GENERIC_ACCELERATION_ARB 0x2026 #define WGL_FULL_ACCELERATION_ARB 0x2027 #define WGL_SWAP_EXCHANGE_ARB 0x2028 #define WGL_SWAP_COPY_ARB 0x2029 #define WGL_SWAP_UNDEFINED_ARB 0x202A #define WGL_TYPE_RGBA_ARB 0x202B #define WGL_TYPE_COLORINDEX_ARB 0x202C #define WGL_SAMPLE_BUFFERS_ARB 0x2041 #define WGL_SAMPLES_ARB 0x2042 #endif #endif