1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2009 Robert Osfield 2 * 3 * This library is open source and may be redistributed and/or modified under 4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 5 * (at your option) any later version. The full license is in LICENSE file 6 * included with this distribution, and on the openscenegraph.org website. 7 * 8 * This library is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * OpenSceneGraph Public License for more details. 12*/ 13 14#ifndef OSGVIEWER_GRAPHICSHANDLEWIN32 15#define OSGVIEWER_GRAPHICSHANDLEWIN32 1 16 17#include <osgViewer/Export> 18 19// Fallback if not correctly detected in CMake macro 20#ifndef _WIN32_WINNT 21//#define _WIN32_WINNT 0x0A00 // Windows 10 22//#define _WIN32_WINNT 0x0603 // Windows 8.1 23//#define _WIN32_WINNT 0x0602 // Windows 8 24//#define _WIN32_WINNT 0x0601 // Windows 7 25//#define _WIN32_WINNT 0x0600 // Windows Server 2008 26//#define _WIN32_WINNT 0x0600 // Windows Vista 27//#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 28//#define _WIN32_WINNT 0x0501 // Windows Server 2003, Windows XP 29#define _WIN32_WINNT 0x0500 // Windows NT 30#endif 31#include <windows.h> 32 33namespace osgViewer 34{ 35 36/** Class to encapsulate platform-specific OpenGL context handle variables. 37 * Derived osg::GraphicsContext classes can inherit from this class to 38 * share OpenGL resources.*/ 39 40class OSGVIEWER_EXPORT GraphicsHandleWin32 41{ 42 public: 43 44 GraphicsHandleWin32(): 45 _hwnd(0), 46 _hdc(0), 47 _hglrc(0) {} 48 49 /** Set native window.*/ 50 inline void setHWND(HWND hwnd) { _hwnd = hwnd; } 51 52 /** Get native window.*/ 53 inline HWND getHWND() const { return _hwnd; } 54 55 /** Set device context.*/ 56 inline void setHDC(HDC hdc) { _hdc = hdc; } 57 58 /** Get device context.*/ 59 inline HDC getHDC() const { return _hdc; } 60 61 /** Set native OpenGL graphics context.*/ 62 inline void setWGLContext(HGLRC hglrc) { _hglrc = hglrc; } 63 64 /** Get native OpenGL graphics context.*/ 65 inline HGLRC getWGLContext() const { return _hglrc; } 66 67 protected: 68 69 HWND _hwnd; 70 HDC _hdc; 71 HGLRC _hglrc; 72 73}; 74 75} 76 77 78// Definitions required to create an OpenGL pixel format, from the WGL_ARB_pixel_format specification document. 79// See http://www.opengl.org/registry/specs/ARB/wgl_pixel_format.txt 80 81#ifndef WGL_ARB_pixel_format 82#define WGL_ARB_pixel_format 1 83#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 84#define WGL_DRAW_TO_WINDOW_ARB 0x2001 85#define WGL_DRAW_TO_BITMAP_ARB 0x2002 86#define WGL_ACCELERATION_ARB 0x2003 87#define WGL_NEED_PALETTE_ARB 0x2004 88#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 89#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 90#define WGL_SWAP_METHOD_ARB 0x2007 91#define WGL_NUMBER_OVERLAYS_ARB 0x2008 92#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 93#define WGL_TRANSPARENT_ARB 0x200A 94#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 95#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 96#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 97#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A 98#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B 99#define WGL_SHARE_DEPTH_ARB 0x200C 100#define WGL_SHARE_STENCIL_ARB 0x200D 101#define WGL_SHARE_ACCUM_ARB 0x200E 102#define WGL_SUPPORT_GDI_ARB 0x200F 103#define WGL_SUPPORT_OPENGL_ARB 0x2010 104#define WGL_DOUBLE_BUFFER_ARB 0x2011 105#define WGL_STEREO_ARB 0x2012 106#define WGL_PIXEL_TYPE_ARB 0x2013 107#define WGL_COLOR_BITS_ARB 0x2014 108#define WGL_RED_BITS_ARB 0x2015 109#define WGL_RED_SHIFT_ARB 0x2016 110#define WGL_GREEN_BITS_ARB 0x2017 111#define WGL_GREEN_SHIFT_ARB 0x2018 112#define WGL_BLUE_BITS_ARB 0x2019 113#define WGL_BLUE_SHIFT_ARB 0x201A 114#define WGL_ALPHA_BITS_ARB 0x201B 115#define WGL_ALPHA_SHIFT_ARB 0x201C 116#define WGL_ACCUM_BITS_ARB 0x201D 117#define WGL_ACCUM_RED_BITS_ARB 0x201E 118#define WGL_ACCUM_GREEN_BITS_ARB 0x201F 119#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 120#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 121#define WGL_DEPTH_BITS_ARB 0x2022 122#define WGL_STENCIL_BITS_ARB 0x2023 123#define WGL_AUX_BUFFERS_ARB 0x2024 124#define WGL_NO_ACCELERATION_ARB 0x2025 125#define WGL_GENERIC_ACCELERATION_ARB 0x2026 126#define WGL_FULL_ACCELERATION_ARB 0x2027 127#define WGL_SWAP_EXCHANGE_ARB 0x2028 128#define WGL_SWAP_COPY_ARB 0x2029 129#define WGL_SWAP_UNDEFINED_ARB 0x202A 130#define WGL_TYPE_RGBA_ARB 0x202B 131#define WGL_TYPE_COLORINDEX_ARB 0x202C 132#define WGL_SAMPLE_BUFFERS_ARB 0x2041 133#define WGL_SAMPLES_ARB 0x2042 134#endif 135 136#endif 137