mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
handle fullscreen mode, revamp window-handling stuff
This commit is contained in:
parent
34c695359e
commit
353af73951
@ -11,7 +11,7 @@
|
|||||||
#define COMBINED_SOURCES $[TARGET]_composite1.cxx
|
#define COMBINED_SOURCES $[TARGET]_composite1.cxx
|
||||||
|
|
||||||
#define SOURCES \
|
#define SOURCES \
|
||||||
config_wgldisplay.h wglGraphicsPipe.h wglGraphicsWindow.cxx wglGraphicsWindow.h
|
config_wgldisplay.h wglGraphicsPipe.h wglGraphicsWindow.cxx wglGraphicsWindow.h wglext.h
|
||||||
|
|
||||||
#define INCLUDED_SOURCES \
|
#define INCLUDED_SOURCES \
|
||||||
config_wgldisplay.cxx wglGraphicsPipe.cxx
|
config_wgldisplay.cxx wglGraphicsPipe.cxx
|
||||||
|
@ -29,9 +29,16 @@ ConfigureFn(config_wgldisplay) {
|
|||||||
init_libwgldisplay();
|
init_libwgldisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Configure this true to force the rendering to sync to the video
|
||||||
|
// refresh, or false to let your frame rate go as high as it can,
|
||||||
|
// irrespective of the video refresh. (if this capability is available in the ICD)
|
||||||
|
bool gl_sync_video = config_wgldisplay.GetBool("sync-video", true);
|
||||||
|
|
||||||
bool gl_show_fps_meter = config_wgldisplay.GetBool("show-fps-meter", false);
|
bool gl_show_fps_meter = config_wgldisplay.GetBool("show-fps-meter", false);
|
||||||
float gl_fps_meter_update_interval = max(0.5,config_wgldisplay.GetFloat("fps-meter-update-interval", 1.7));
|
float gl_fps_meter_update_interval = max(0.5,config_wgldisplay.GetFloat("fps-meter-update-interval", 1.7));
|
||||||
|
|
||||||
|
extern void AtExitFn(void);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: init_libwgldisplay
|
// Function: init_libwgldisplay
|
||||||
// Description: Initializes the library. This must be called at
|
// Description: Initializes the library. This must be called at
|
||||||
@ -56,6 +63,8 @@ init_libwgldisplay() {
|
|||||||
GraphicsWindow::get_factory().register_factory(
|
GraphicsWindow::get_factory().register_factory(
|
||||||
wglGraphicsWindow::get_class_type(),
|
wglGraphicsWindow::get_class_type(),
|
||||||
wglGraphicsWindow::make_wglGraphicsWindow);
|
wglGraphicsWindow::make_wglGraphicsWindow);
|
||||||
|
|
||||||
|
atexit(AtExitFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
// cant use global var cleanly because global var static init executed after init_libwgl(), incorrectly reiniting var
|
// cant use global var cleanly because global var static init executed after init_libwgl(), incorrectly reiniting var
|
||||||
|
@ -28,6 +28,7 @@ NotifyCategoryDecl(wgldisplay, EXPCL_PANDAGL, EXPTP_PANDAGL);
|
|||||||
extern Filename get_icon_filename_();
|
extern Filename get_icon_filename_();
|
||||||
extern bool gl_show_fps_meter;
|
extern bool gl_show_fps_meter;
|
||||||
extern float gl_fps_meter_update_interval;
|
extern float gl_fps_meter_update_interval;
|
||||||
|
extern bool gl_sync_video;
|
||||||
|
|
||||||
extern EXPCL_PANDAGL void init_libwgldisplay();
|
extern EXPCL_PANDAGL void init_libwgldisplay();
|
||||||
|
|
||||||
|
@ -25,61 +25,11 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
TypeHandle wglGraphicsPipe::_type_handle;
|
TypeHandle wglGraphicsPipe::_type_handle;
|
||||||
|
|
||||||
wglGraphicsPipe *global_pipe;
|
//wglGraphicsPipe *global_pipe;
|
||||||
|
|
||||||
#define MOUSE_ENTERED 0
|
|
||||||
#define MOUSE_EXITED 1
|
|
||||||
|
|
||||||
wglGraphicsPipe::wglGraphicsPipe(const PipeSpecifier& spec)
|
wglGraphicsPipe::wglGraphicsPipe(const PipeSpecifier& spec)
|
||||||
: InteractiveGraphicsPipe(spec)
|
: InteractiveGraphicsPipe(spec)
|
||||||
{
|
{}
|
||||||
// Register a standard window class
|
|
||||||
WNDCLASS wc;
|
|
||||||
HINSTANCE hinstance = GetModuleHandle(NULL);
|
|
||||||
|
|
||||||
// Clear before filling in window structure!
|
|
||||||
memset(&wc, 0, sizeof(WNDCLASS));
|
|
||||||
wc.style = CS_OWNDC;
|
|
||||||
wc.lpfnWndProc = (WNDPROC)static_window_proc;
|
|
||||||
wc.hInstance = hinstance;
|
|
||||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
||||||
wc.hbrBackground = NULL;
|
|
||||||
wc.lpszMenuName = NULL;
|
|
||||||
wc.lpszClassName = "wglStandard";
|
|
||||||
|
|
||||||
string windows_icon_filename = get_icon_filename_().to_os_specific();
|
|
||||||
|
|
||||||
if(!windows_icon_filename.empty()) {
|
|
||||||
// Note: LoadImage seems to cause win2k internal heap corruption (outputdbgstr warnings)
|
|
||||||
// if icon is more than 8bpp
|
|
||||||
wc.hIcon = (HICON) LoadImage(NULL, windows_icon_filename.c_str(), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
|
|
||||||
} else {
|
|
||||||
wc.hIcon = NULL; // use default app icon
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!RegisterClass(&wc)) {
|
|
||||||
wgldisplay_cat.fatal()
|
|
||||||
<< "wglGraphicsPipe::construct(): could not register standard window "
|
|
||||||
<< "class" << endl;
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register a fullscreen window class
|
|
||||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
|
||||||
wc.lpszClassName = "wglFullscreen";
|
|
||||||
|
|
||||||
if (!RegisterClass(&wc)) {
|
|
||||||
wgldisplay_cat.fatal()
|
|
||||||
<< "wglGraphicsPipe::construct(): could not register fullscreen window "
|
|
||||||
<< "class" << endl;
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
_width = GetSystemMetrics(SM_CXSCREEN);
|
|
||||||
_height = GetSystemMetrics(SM_CYSCREEN);
|
|
||||||
_shift = false;
|
|
||||||
global_pipe = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: wglGraphicsPipe::get_window_type
|
// Function: wglGraphicsPipe::get_window_type
|
||||||
@ -133,273 +83,3 @@ wglGraphicsPipe& wglGraphicsPipe::operator=(const wglGraphicsPipe&) {
|
|||||||
<< "wglGraphicsPipes should not be assigned" << endl;
|
<< "wglGraphicsPipes should not be assigned" << endl;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: find_window
|
|
||||||
// Access:
|
|
||||||
// Description: Find the window that has the xwindow "win" in the
|
|
||||||
// window list for the pipe (if it exists)
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
wglGraphicsWindow *wglGraphicsPipe::
|
|
||||||
find_window(HWND win) {
|
|
||||||
int num_windows = get_num_windows();
|
|
||||||
for (int w = 0; w < num_windows; w++) {
|
|
||||||
wglGraphicsWindow *window = DCAST(wglGraphicsWindow, get_window(w));
|
|
||||||
if (window->_mwindow == win)
|
|
||||||
return window;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: static_window_proc
|
|
||||||
// Access:
|
|
||||||
// Description:
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
LONG WINAPI wglGraphicsPipe::
|
|
||||||
static_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
|
|
||||||
return global_pipe->window_proc(hwnd, msg, wparam, lparam);
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: window_proc
|
|
||||||
// Access:
|
|
||||||
// Description:
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
LONG wglGraphicsPipe::
|
|
||||||
window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
|
|
||||||
PAINTSTRUCT ps;
|
|
||||||
wglGraphicsWindow *window;
|
|
||||||
int button = -1;
|
|
||||||
int x, y, width, height;
|
|
||||||
static HCURSOR hMouseCrossIcon = NULL;
|
|
||||||
|
|
||||||
switch (msg) {
|
|
||||||
case WM_CREATE:
|
|
||||||
hMouseCrossIcon = LoadCursor(NULL, IDC_ARROW);
|
|
||||||
SetCursor(hMouseCrossIcon);
|
|
||||||
return 0;
|
|
||||||
case WM_CLOSE:
|
|
||||||
PostQuitMessage(0);
|
|
||||||
return 0;
|
|
||||||
case WM_PAINT:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
BeginPaint(hwnd, &ps);
|
|
||||||
EndPaint(hwnd, &ps);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_SYSCHAR:
|
|
||||||
case WM_CHAR:
|
|
||||||
return 0;
|
|
||||||
case WM_SYSKEYDOWN:
|
|
||||||
case WM_KEYDOWN:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
POINT point;
|
|
||||||
window->make_current();
|
|
||||||
GetCursorPos(&point);
|
|
||||||
ScreenToClient(hwnd, &point);
|
|
||||||
window->handle_keypress(lookup_key(wparam), point.x, point.y);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_SYSKEYUP:
|
|
||||||
case WM_KEYUP:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
POINT point;
|
|
||||||
window->make_current();
|
|
||||||
GetCursorPos(&point);
|
|
||||||
ScreenToClient(hwnd, &point);
|
|
||||||
window->handle_keyrelease(lookup_key(wparam), point.x, point.y);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_LBUTTONDOWN:
|
|
||||||
button = 0;
|
|
||||||
case WM_MBUTTONDOWN:
|
|
||||||
if (button < 0)
|
|
||||||
button = 1;
|
|
||||||
case WM_RBUTTONDOWN:
|
|
||||||
if (button < 0)
|
|
||||||
button = 2;
|
|
||||||
SetCapture(hwnd);
|
|
||||||
// Win32 doesn't return the same numbers as X does when the mouse
|
|
||||||
// goes beyond the upper or left side of the window
|
|
||||||
x = LOWORD(lparam);
|
|
||||||
y = HIWORD(lparam);
|
|
||||||
if (x & 1 << 15) x -= (1 << 16);
|
|
||||||
if (y & 1 << 15) y -= (1 << 16);
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
window->make_current();
|
|
||||||
window->handle_keypress(MouseButton::button(button), x, y);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_LBUTTONUP:
|
|
||||||
button = 0;
|
|
||||||
case WM_MBUTTONUP:
|
|
||||||
if (button < 0)
|
|
||||||
button = 1;
|
|
||||||
case WM_RBUTTONUP:
|
|
||||||
if (button < 0)
|
|
||||||
button = 2;
|
|
||||||
ReleaseCapture();
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
x = LOWORD(lparam);
|
|
||||||
y = HIWORD(lparam);
|
|
||||||
if (x & 1 << 15) x -= (1 << 16);
|
|
||||||
if (y & 1 << 15) y -= (1 << 16);
|
|
||||||
window->make_current();
|
|
||||||
window->handle_keyrelease(MouseButton::button(button), x, y);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_MOUSEMOVE:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
x = LOWORD(lparam);
|
|
||||||
y = HIWORD(lparam);
|
|
||||||
if (x & 1 << 15) x -= (1 << 16);
|
|
||||||
if (y & 1 << 15) y -= (1 << 16);
|
|
||||||
if (window->mouse_motion_enabled()
|
|
||||||
&& wparam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) {
|
|
||||||
window->make_current();
|
|
||||||
window->handle_mouse_motion(x, y);
|
|
||||||
} else if (window->mouse_passive_motion_enabled() &&
|
|
||||||
((wparam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) == 0)) {
|
|
||||||
window->make_current();
|
|
||||||
window->handle_mouse_motion(x, y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_SIZE:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
width = LOWORD(lparam);
|
|
||||||
height = HIWORD(lparam);
|
|
||||||
window->handle_reshape(width, height);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
//this is unnecessary, just handle mouse entry
|
|
||||||
case WM_SETCURSOR:
|
|
||||||
// We need to set the cursor every time the mouse moves on Win32!
|
|
||||||
if (LOWORD(lparam) != HTCLIENT)
|
|
||||||
return DefWindowProc(hwnd, msg, wparam, lparam);
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
SetCursor(LoadCursor(NULL, IDC_ARROW));
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
#endif
|
|
||||||
case WM_SETFOCUS:
|
|
||||||
SetCursor(hMouseCrossIcon);
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
if (window->mouse_entry_enabled()) {
|
|
||||||
window->make_current();
|
|
||||||
window->handle_mouse_entry(MOUSE_ENTERED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
case WM_KILLFOCUS:
|
|
||||||
window = find_window(hwnd);
|
|
||||||
if (window) {
|
|
||||||
if (window->mouse_entry_enabled()) {
|
|
||||||
window->make_current();
|
|
||||||
window->handle_mouse_entry(MOUSE_EXITED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
return DefWindowProc(hwnd, msg, wparam, lparam);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: lookup_key
|
|
||||||
// Access:
|
|
||||||
// Description:
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
ButtonHandle
|
|
||||||
wglGraphicsPipe::lookup_key(WPARAM wparam) const {
|
|
||||||
switch (wparam) {
|
|
||||||
case VK_BACK: return KeyboardButton::backspace();
|
|
||||||
case VK_TAB: return KeyboardButton::tab();
|
|
||||||
case VK_ESCAPE: return KeyboardButton::escape();
|
|
||||||
case VK_SPACE: return KeyboardButton::space();
|
|
||||||
case VK_UP: return KeyboardButton::up();
|
|
||||||
case VK_DOWN: return KeyboardButton::down();
|
|
||||||
case VK_LEFT: return KeyboardButton::left();
|
|
||||||
case VK_RIGHT: return KeyboardButton::right();
|
|
||||||
case VK_PRIOR: return KeyboardButton::page_up();
|
|
||||||
case VK_NEXT: return KeyboardButton::page_down();
|
|
||||||
case VK_HOME: return KeyboardButton::home();
|
|
||||||
case VK_END: return KeyboardButton::end();
|
|
||||||
case VK_F1: return KeyboardButton::f1();
|
|
||||||
case VK_F2: return KeyboardButton::f2();
|
|
||||||
case VK_F3: return KeyboardButton::f3();
|
|
||||||
case VK_F4: return KeyboardButton::f4();
|
|
||||||
case VK_F5: return KeyboardButton::f5();
|
|
||||||
case VK_F6: return KeyboardButton::f6();
|
|
||||||
case VK_F7: return KeyboardButton::f7();
|
|
||||||
case VK_F8: return KeyboardButton::f8();
|
|
||||||
case VK_F9: return KeyboardButton::f9();
|
|
||||||
case VK_F10: return KeyboardButton::f10();
|
|
||||||
case VK_F11: return KeyboardButton::f11();
|
|
||||||
case VK_F12: return KeyboardButton::f12();
|
|
||||||
case VK_INSERT: return KeyboardButton::insert();
|
|
||||||
case VK_DELETE: return KeyboardButton::del();
|
|
||||||
|
|
||||||
case VK_SHIFT:
|
|
||||||
case VK_LSHIFT:
|
|
||||||
case VK_RSHIFT:
|
|
||||||
return KeyboardButton::shift();
|
|
||||||
|
|
||||||
case VK_CONTROL:
|
|
||||||
case VK_LCONTROL:
|
|
||||||
case VK_RCONTROL:
|
|
||||||
return KeyboardButton::control();
|
|
||||||
|
|
||||||
case VK_MENU:
|
|
||||||
case VK_LMENU:
|
|
||||||
case VK_RMENU:
|
|
||||||
return KeyboardButton::alt();
|
|
||||||
|
|
||||||
default:
|
|
||||||
int key = MapVirtualKey(wparam, 2);
|
|
||||||
if (isascii(key) && key != 0) {
|
|
||||||
if (GetKeyState(VK_SHIFT) >= 0)
|
|
||||||
key = tolower(key);
|
|
||||||
else {
|
|
||||||
switch (key) {
|
|
||||||
case '1': key = '!'; break;
|
|
||||||
case '2': key = '@'; break;
|
|
||||||
case '3': key = '#'; break;
|
|
||||||
case '4': key = '$'; break;
|
|
||||||
case '5': key = '%'; break;
|
|
||||||
case '6': key = '^'; break;
|
|
||||||
case '7': key = '&'; break;
|
|
||||||
case '8': key = '*'; break;
|
|
||||||
case '9': key = '('; break;
|
|
||||||
case '0': key = ')'; break;
|
|
||||||
case '-': key = '_'; break;
|
|
||||||
case '=': key = '+'; break;
|
|
||||||
case ',': key = '<'; break;
|
|
||||||
case '.': key = '>'; break;
|
|
||||||
case '/': key = '?'; break;
|
|
||||||
case ';': key = ':'; break;
|
|
||||||
case '\'': key = '"'; break;
|
|
||||||
case '[': key = '{'; break;
|
|
||||||
case ']': key = '}'; break;
|
|
||||||
case '\\': key = '|'; break;
|
|
||||||
case '`': key = '~'; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return KeyboardButton::ascii_key((uchar)key);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ButtonHandle::none();
|
|
||||||
}
|
|
||||||
|
@ -30,11 +30,6 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#undef WINDOWS_LEAN_AND_MEAN
|
#undef WINDOWS_LEAN_AND_MEAN
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Defines
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
class Xclass;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Class : wglGraphicsPipe
|
// Class : wglGraphicsPipe
|
||||||
// Description :
|
// Description :
|
||||||
@ -43,9 +38,6 @@ class EXPCL_PANDAGL wglGraphicsPipe : public InteractiveGraphicsPipe {
|
|||||||
public:
|
public:
|
||||||
wglGraphicsPipe(const PipeSpecifier&);
|
wglGraphicsPipe(const PipeSpecifier&);
|
||||||
|
|
||||||
wglGraphicsWindow* find_window(HWND win);
|
|
||||||
ButtonHandle lookup_key(WPARAM wparam) const;
|
|
||||||
|
|
||||||
virtual TypeHandle get_window_type() const;
|
virtual TypeHandle get_window_type() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -61,19 +53,11 @@ private:
|
|||||||
|
|
||||||
static TypeHandle _type_handle;
|
static TypeHandle _type_handle;
|
||||||
|
|
||||||
int _width;
|
|
||||||
int _height;
|
|
||||||
bool _shift;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
wglGraphicsPipe(void);
|
wglGraphicsPipe(void);
|
||||||
wglGraphicsPipe(const wglGraphicsPipe&);
|
wglGraphicsPipe(const wglGraphicsPipe&);
|
||||||
wglGraphicsPipe& operator=(const wglGraphicsPipe&);
|
wglGraphicsPipe& operator=(const wglGraphicsPipe&);
|
||||||
|
|
||||||
static LONG WINAPI static_window_proc(HWND hwnd, UINT msg, WPARAM wparam,
|
|
||||||
LPARAM lparam);
|
|
||||||
LONG window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -33,9 +33,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
class wglGraphicsPipe;
|
class wglGraphicsPipe;
|
||||||
|
|
||||||
const int WGLWIN_CONFIGURE = 4;
|
|
||||||
const int WGLWIN_EVENT = 8;
|
|
||||||
|
|
||||||
#define GLX_USE_GL 1 /* support GLX rendering */
|
#define GLX_USE_GL 1 /* support GLX rendering */
|
||||||
#define GLX_BUFFER_SIZE 2 /* depth of the color buffer */
|
#define GLX_BUFFER_SIZE 2 /* depth of the color buffer */
|
||||||
#define GLX_LEVEL 3 /* level in plane stacking */
|
#define GLX_LEVEL 3 /* level in plane stacking */
|
||||||
@ -86,7 +83,7 @@ public:
|
|||||||
void handle_mouse_motion( int x, int y );
|
void handle_mouse_motion( int x, int y );
|
||||||
void handle_mouse_entry( int state );
|
void handle_mouse_entry( int state );
|
||||||
void handle_keypress( ButtonHandle key, int x, int y );
|
void handle_keypress( ButtonHandle key, int x, int y );
|
||||||
void handle_keyrelease( ButtonHandle key, int x, int y );
|
void handle_keyrelease( ButtonHandle key );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
PIXELFORMATDESCRIPTOR* try_for_visual(wglGraphicsPipe *pipe,
|
PIXELFORMATDESCRIPTOR* try_for_visual(wglGraphicsPipe *pipe,
|
||||||
@ -103,9 +100,6 @@ protected:
|
|||||||
|
|
||||||
void handle_changes(void);
|
void handle_changes(void);
|
||||||
void process_events(void);
|
void process_events(void);
|
||||||
void idle_wait(void);
|
|
||||||
|
|
||||||
void adjust_coords(int &xorg, int &yorg, int &xsize, int &ysize);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
uint _change_mask;
|
uint _change_mask;
|
||||||
@ -116,6 +110,12 @@ private:
|
|||||||
HDC _hdc;
|
HDC _hdc;
|
||||||
PIXELFORMATDESCRIPTOR* _visual;
|
PIXELFORMATDESCRIPTOR* _visual;
|
||||||
HPALETTE _colormap;
|
HPALETTE _colormap;
|
||||||
|
HCURSOR _hMouseCursor;
|
||||||
|
|
||||||
|
DEVMODE *_pCurrent_display_settings;
|
||||||
|
|
||||||
|
bool _window_inactive;
|
||||||
|
bool _exiting_window;
|
||||||
|
|
||||||
bool _mouse_input_enabled;
|
bool _mouse_input_enabled;
|
||||||
bool _mouse_motion_enabled;
|
bool _mouse_motion_enabled;
|
||||||
@ -131,12 +131,18 @@ private:
|
|||||||
DWORD _cur_frame_count;
|
DWORD _cur_frame_count;
|
||||||
float _current_fps;
|
float _current_fps;
|
||||||
|
|
||||||
|
string _extensions_str;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static TypeHandle get_class_type(void);
|
static TypeHandle get_class_type(void);
|
||||||
static void init_type(void);
|
static void init_type(void);
|
||||||
virtual TypeHandle get_type(void) const;
|
virtual TypeHandle get_type(void) const;
|
||||||
virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
|
virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
|
||||||
|
|
||||||
|
LONG WINAPI window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
|
||||||
|
ButtonHandle lookup_key(WPARAM wparam) const;
|
||||||
|
void DestroyMe(bool bAtExit);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static TypeHandle _type_handle;
|
static TypeHandle _type_handle;
|
||||||
};
|
};
|
||||||
|
401
panda/src/wgldisplay/wglext.h
Normal file
401
panda/src/wgldisplay/wglext.h
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
#ifndef __wglext_h_
|
||||||
|
#define __wglext_h_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** License Applicability. Except to the extent portions of this file are
|
||||||
|
** made subject to an alternative license as permitted in the SGI Free
|
||||||
|
** Software License B, Version 1.1 (the "License"), the contents of this
|
||||||
|
** file are subject only to the provisions of the License. You may not use
|
||||||
|
** this file except in compliance with the License. You may obtain a copy
|
||||||
|
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
||||||
|
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
||||||
|
**
|
||||||
|
** http://oss.sgi.com/projects/FreeB
|
||||||
|
**
|
||||||
|
** Note that, as provided in the License, the Software is distributed on an
|
||||||
|
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
||||||
|
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
||||||
|
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
||||||
|
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
||||||
|
**
|
||||||
|
** Original Code. The Original Code is: OpenGL Sample Implementation,
|
||||||
|
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
|
||||||
|
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
|
||||||
|
** Copyright in any portions created by third parties is as indicated
|
||||||
|
** elsewhere herein. All Rights Reserved.
|
||||||
|
**
|
||||||
|
** Additional Notice Provisions: This software was created using the
|
||||||
|
** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
|
||||||
|
** not been independently verified as being compliant with the OpenGL(R)
|
||||||
|
** version 1.2.1 Specification.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
|
||||||
|
#define WIN32_LEAN_AND_MEAN 1
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef APIENTRY
|
||||||
|
#define APIENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
/* Header file version number */
|
||||||
|
#define WGL_WGLEXT_VERSION 1
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_buffer_region
|
||||||
|
#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
|
||||||
|
#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
|
||||||
|
#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
|
||||||
|
#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_extensions_string
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#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_make_current_read
|
||||||
|
#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
|
||||||
|
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
|
||||||
|
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
|
||||||
|
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
|
||||||
|
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
|
||||||
|
#define WGL_PBUFFER_LARGEST_ARB 0x2033
|
||||||
|
#define WGL_PBUFFER_WIDTH_ARB 0x2034
|
||||||
|
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
|
||||||
|
#define WGL_PBUFFER_LOST_ARB 0x2036
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_make_current_read
|
||||||
|
#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format
|
||||||
|
#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
|
||||||
|
#define WGL_DRAW_TO_WINDOW_EXT 0x2001
|
||||||
|
#define WGL_DRAW_TO_BITMAP_EXT 0x2002
|
||||||
|
#define WGL_ACCELERATION_EXT 0x2003
|
||||||
|
#define WGL_NEED_PALETTE_EXT 0x2004
|
||||||
|
#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
|
||||||
|
#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
|
||||||
|
#define WGL_SWAP_METHOD_EXT 0x2007
|
||||||
|
#define WGL_NUMBER_OVERLAYS_EXT 0x2008
|
||||||
|
#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
|
||||||
|
#define WGL_TRANSPARENT_EXT 0x200A
|
||||||
|
#define WGL_TRANSPARENT_VALUE_EXT 0x200B
|
||||||
|
#define WGL_SHARE_DEPTH_EXT 0x200C
|
||||||
|
#define WGL_SHARE_STENCIL_EXT 0x200D
|
||||||
|
#define WGL_SHARE_ACCUM_EXT 0x200E
|
||||||
|
#define WGL_SUPPORT_GDI_EXT 0x200F
|
||||||
|
#define WGL_SUPPORT_OPENGL_EXT 0x2010
|
||||||
|
#define WGL_DOUBLE_BUFFER_EXT 0x2011
|
||||||
|
#define WGL_STEREO_EXT 0x2012
|
||||||
|
#define WGL_PIXEL_TYPE_EXT 0x2013
|
||||||
|
#define WGL_COLOR_BITS_EXT 0x2014
|
||||||
|
#define WGL_RED_BITS_EXT 0x2015
|
||||||
|
#define WGL_RED_SHIFT_EXT 0x2016
|
||||||
|
#define WGL_GREEN_BITS_EXT 0x2017
|
||||||
|
#define WGL_GREEN_SHIFT_EXT 0x2018
|
||||||
|
#define WGL_BLUE_BITS_EXT 0x2019
|
||||||
|
#define WGL_BLUE_SHIFT_EXT 0x201A
|
||||||
|
#define WGL_ALPHA_BITS_EXT 0x201B
|
||||||
|
#define WGL_ALPHA_SHIFT_EXT 0x201C
|
||||||
|
#define WGL_ACCUM_BITS_EXT 0x201D
|
||||||
|
#define WGL_ACCUM_RED_BITS_EXT 0x201E
|
||||||
|
#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
|
||||||
|
#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
|
||||||
|
#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
|
||||||
|
#define WGL_DEPTH_BITS_EXT 0x2022
|
||||||
|
#define WGL_STENCIL_BITS_EXT 0x2023
|
||||||
|
#define WGL_AUX_BUFFERS_EXT 0x2024
|
||||||
|
#define WGL_NO_ACCELERATION_EXT 0x2025
|
||||||
|
#define WGL_GENERIC_ACCELERATION_EXT 0x2026
|
||||||
|
#define WGL_FULL_ACCELERATION_EXT 0x2027
|
||||||
|
#define WGL_SWAP_EXCHANGE_EXT 0x2028
|
||||||
|
#define WGL_SWAP_COPY_EXT 0x2029
|
||||||
|
#define WGL_SWAP_UNDEFINED_EXT 0x202A
|
||||||
|
#define WGL_TYPE_RGBA_EXT 0x202B
|
||||||
|
#define WGL_TYPE_COLORINDEX_EXT 0x202C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
|
||||||
|
#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
|
||||||
|
#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
|
||||||
|
#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
|
||||||
|
#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
|
||||||
|
#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
|
||||||
|
#define WGL_PBUFFER_LARGEST_EXT 0x2033
|
||||||
|
#define WGL_PBUFFER_WIDTH_EXT 0x2034
|
||||||
|
#define WGL_PBUFFER_HEIGHT_EXT 0x2035
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_depth_float
|
||||||
|
#define WGL_DEPTH_FLOAT_EXT 0x2040
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_3DFX_multisample
|
||||||
|
#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
|
||||||
|
#define WGL_SAMPLES_3DFX 0x2061
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_multisample
|
||||||
|
#define WGL_SAMPLE_BUFFERS_EXT 0x2041
|
||||||
|
#define WGL_SAMPLES_EXT 0x2042
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_unknown_genlock_extension_name
|
||||||
|
#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047
|
||||||
|
#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
|
||||||
|
#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_unknown_gamma_extension_name
|
||||||
|
#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
|
||||||
|
#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_unknown_digital_video_cursor_extension_name
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
|
||||||
|
#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
DECLARE_HANDLE(HPBUFFERARB);
|
||||||
|
#endif
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
DECLARE_HANDLE(HPBUFFEREXT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_buffer_region
|
||||||
|
#define WGL_ARB_buffer_region 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HANDLE WINAPI wglCreateBufferRegionARB (HDC, int, UINT);
|
||||||
|
extern VOID WINAPI wglDeleteBufferRegionARB (HANDLE);
|
||||||
|
extern BOOL WINAPI wglSaveBufferRegionARB (HANDLE, int, int, int, int);
|
||||||
|
extern BOOL WINAPI wglRestoreBufferRegionARB (HANDLE, int, int, int, int, int, int);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
|
||||||
|
typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_extensions_string
|
||||||
|
#define WGL_ARB_extensions_string 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern const char * WINAPI wglGetExtensionsStringARB (HDC);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pixel_format
|
||||||
|
#define WGL_ARB_pixel_format 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribivARB (HDC, int, int, UINT, const int *, int *);
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC, int, int, UINT, const int *, FLOAT *);
|
||||||
|
extern BOOL WINAPI wglChoosePixelFormatARB (HDC, const int *, const FLOAT *, UINT, int *, UINT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_make_current_read
|
||||||
|
#define WGL_ARB_make_current_read 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglMakeContextCurrentARB (HDC, HDC, HGLRC);
|
||||||
|
extern HDC WINAPI wglGetCurrentReadDCARB (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
#define WGL_ARB_pbuffer 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HPBUFFERARB WINAPI wglCreatePbufferARB (HDC, int, int, int, const int *);
|
||||||
|
extern HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB);
|
||||||
|
extern int WINAPI wglReleasePbufferDCARB (HPBUFFERARB, HDC);
|
||||||
|
extern BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB);
|
||||||
|
extern BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB, int, int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
|
||||||
|
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_display_color_table
|
||||||
|
#define WGL_EXT_display_color_table 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort);
|
||||||
|
extern GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *, GLuint);
|
||||||
|
extern GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort);
|
||||||
|
extern VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_extensions_string
|
||||||
|
#define WGL_EXT_extensions_string 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern const char * WINAPI wglGetExtensionsStringEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_make_current_read
|
||||||
|
#define WGL_EXT_make_current_read 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglMakeContextCurrentEXT (HDC, HDC, HGLRC);
|
||||||
|
extern HDC WINAPI wglGetCurrentReadDCEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
#define WGL_EXT_pbuffer 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC, int, int, int, const int *);
|
||||||
|
extern HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT);
|
||||||
|
extern int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT, HDC);
|
||||||
|
extern BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT);
|
||||||
|
extern BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT, int, int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
|
||||||
|
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format
|
||||||
|
#define WGL_EXT_pixel_format 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC, int, int, UINT, int *, int *);
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC, int, int, UINT, int *, FLOAT *);
|
||||||
|
extern BOOL WINAPI wglChoosePixelFormatEXT (HDC, const int *, const FLOAT *, UINT, int *, UINT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_swap_control
|
||||||
|
#define WGL_EXT_swap_control 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglSwapIntervalEXT (int);
|
||||||
|
extern int WINAPI wglGetSwapIntervalEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||||
|
typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_WGL_EXT_depth_float
|
||||||
|
#define WGL_WGL_EXT_depth_float 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_WGL_3DFX_multisample
|
||||||
|
#define WGL_WGL_3DFX_multisample 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_WGL_EXT_multisample
|
||||||
|
#define WGL_WGL_EXT_multisample 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* added by Cass -- but this should already be in here! */
|
||||||
|
#ifndef WGL_NV_allocate_memory
|
||||||
|
#define WGL_NV_allocate_memory 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern void * wglAllocateMemoryNV(int size, float readfreq, float writefreq, float priority);
|
||||||
|
extern void wglFreeMemoryNV(void * pointer);
|
||||||
|
#endif
|
||||||
|
typedef void * (APIENTRY * PFNWGLALLOCATEMEMORYNVPROC) (int size, float readfreq, float writefreq, float priority);
|
||||||
|
typedef void (APIENTRY * PFNWGLFREEMEMORYNVPROC) (void *pointer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user