c5c94a6be6
(SDL_SetError(), SDL_OutOfMemory(), SDL_Unsupported(), SDL_InvalidParam()) Update prototype to forward errors to generic layer, for the functions: MoveCursor, WarpMouse, GL_DeleteContext, GetDisplayModes. Check invalid parameter in SDL_SetTextInputRect() generic layer.
180 lines
6.9 KiB
C
180 lines
6.9 KiB
C
/*
|
|
Simple DirectMedia Layer
|
|
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
warranty. In no event will the authors be held liable for any damages
|
|
arising from the use of this software.
|
|
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
including commercial applications, and to alter it and redistribute it
|
|
freely, subject to the following restrictions:
|
|
|
|
1. The origin of this software must not be misrepresented; you must not
|
|
claim that you wrote the original software. If you use this software
|
|
in a product, an acknowledgment in the product documentation would be
|
|
appreciated but is not required.
|
|
2. Altered source versions must be plainly marked as such, and must not be
|
|
misrepresented as being the original software.
|
|
3. This notice may not be removed or altered from any source distribution.
|
|
*/
|
|
#include "SDL_internal.h"
|
|
|
|
#ifndef SDL_windowsopengl_h_
|
|
#define SDL_windowsopengl_h_
|
|
|
|
#if SDL_VIDEO_OPENGL_WGL
|
|
|
|
#if __XBOXONE__ || __XBOXSERIES__
|
|
typedef struct tagPIXELFORMATDESCRIPTOR
|
|
{
|
|
WORD nSize;
|
|
WORD nVersion;
|
|
DWORD dwFlags;
|
|
BYTE iPixelType;
|
|
BYTE cColorBits;
|
|
BYTE cRedBits;
|
|
BYTE cRedShift;
|
|
BYTE cGreenBits;
|
|
BYTE cGreenShift;
|
|
BYTE cBlueBits;
|
|
BYTE cBlueShift;
|
|
BYTE cAlphaBits;
|
|
BYTE cAlphaShift;
|
|
BYTE cAccumBits;
|
|
BYTE cAccumRedBits;
|
|
BYTE cAccumGreenBits;
|
|
BYTE cAccumBlueBits;
|
|
BYTE cAccumAlphaBits;
|
|
BYTE cDepthBits;
|
|
BYTE cStencilBits;
|
|
BYTE cAuxBuffers;
|
|
BYTE iLayerType;
|
|
BYTE bReserved;
|
|
DWORD dwLayerMask;
|
|
DWORD dwVisibleMask;
|
|
DWORD dwDamageMask;
|
|
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
|
|
#endif
|
|
|
|
struct SDL_GLDriverData
|
|
{
|
|
SDL_bool HAS_WGL_ARB_pixel_format;
|
|
SDL_bool HAS_WGL_EXT_swap_control_tear;
|
|
SDL_bool HAS_WGL_ARB_context_flush_control;
|
|
SDL_bool HAS_WGL_ARB_create_context_robustness;
|
|
SDL_bool HAS_WGL_ARB_create_context_no_error;
|
|
|
|
/* Max version of OpenGL ES context that can be created if the
|
|
implementation supports WGL_EXT_create_context_es2_profile.
|
|
major = minor = 0 when unsupported.
|
|
*/
|
|
struct
|
|
{
|
|
int major;
|
|
int minor;
|
|
} es_profile_max_supported_version;
|
|
|
|
/* *INDENT-OFF* */ /* clang-format off */
|
|
PROC (WINAPI *wglGetProcAddress)(const char *proc);
|
|
HGLRC (WINAPI *wglCreateContext)(HDC hdc);
|
|
BOOL (WINAPI *wglDeleteContext)(HGLRC hglrc);
|
|
BOOL (WINAPI *wglMakeCurrent)(HDC hdc, HGLRC hglrc);
|
|
BOOL (WINAPI *wglShareLists)(HGLRC hglrc1, HGLRC hglrc2);
|
|
BOOL (WINAPI *wglChoosePixelFormatARB)(HDC hdc, const int *piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int *piFormats, UINT * nNumFormats);
|
|
BOOL (WINAPI *wglGetPixelFormatAttribivARB)(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
|
BOOL (WINAPI *wglSwapIntervalEXT)(int interval);
|
|
int (WINAPI *wglGetSwapIntervalEXT)(void);
|
|
#if __XBOXONE__ || __XBOXSERIES__
|
|
BOOL (WINAPI *wglSwapBuffers)(HDC hdc);
|
|
int (WINAPI *wglDescribePixelFormat)(HDC hdc,
|
|
int iPixelFormat,
|
|
UINT nBytes,
|
|
LPPIXELFORMATDESCRIPTOR ppfd);
|
|
int (WINAPI *wglChoosePixelFormat)(HDC hdc,
|
|
const PIXELFORMATDESCRIPTOR *ppfd);
|
|
BOOL (WINAPI *wglSetPixelFormat)(HDC hdc,
|
|
int format,
|
|
const PIXELFORMATDESCRIPTOR *ppfd);
|
|
int (WINAPI *wglGetPixelFormat)(HDC hdc);
|
|
#endif
|
|
/* *INDENT-ON* */ /* clang-format on */
|
|
};
|
|
|
|
/* OpenGL functions */
|
|
extern int WIN_GL_LoadLibrary(_THIS, const char *path);
|
|
extern SDL_FunctionPointer WIN_GL_GetProcAddress(_THIS, const char *proc);
|
|
extern void WIN_GL_UnloadLibrary(_THIS);
|
|
extern SDL_bool WIN_GL_UseEGL(_THIS);
|
|
extern int WIN_GL_SetupWindow(_THIS, SDL_Window *window);
|
|
extern SDL_GLContext WIN_GL_CreateContext(_THIS, SDL_Window *window);
|
|
extern int WIN_GL_MakeCurrent(_THIS, SDL_Window *window,
|
|
SDL_GLContext context);
|
|
extern int WIN_GL_SetSwapInterval(_THIS, int interval);
|
|
extern int WIN_GL_GetSwapInterval(_THIS, int *interval);
|
|
extern int WIN_GL_SwapWindow(_THIS, SDL_Window *window);
|
|
extern int WIN_GL_DeleteContext(_THIS, SDL_GLContext context);
|
|
extern void WIN_GL_InitExtensions(_THIS);
|
|
extern SDL_bool WIN_GL_SetPixelFormatFrom(_THIS, SDL_Window *fromWindow, SDL_Window *toWindow);
|
|
|
|
#ifndef WGL_ARB_pixel_format
|
|
#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
|
|
#endif
|
|
|
|
#ifndef WGL_ARB_multisample
|
|
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
|
|
#define WGL_SAMPLES_ARB 0x2042
|
|
#endif
|
|
|
|
#endif /* SDL_VIDEO_OPENGL_WGL */
|
|
|
|
#endif /* SDL_windowsopengl_h_ */
|