version 1.2 | | version 1.3 |
---|
| | |
#include "ogl_init.h" | | //nothing to do, everything is in wgl.c. Just some empty funcs to make it happy. -MM |
| | |
#include <stdio.h> | | |
#include <stdlib.h> | | |
#include <string.h> | | |
#include <windows.h> | | |
#include <mmsystem.h> | | |
#include "args.h" | | |
| | |
HINSTANCE hInst; | | |
HWND g_hWnd; | | |
| | |
extern int Inferno_verbose; | | |
| | |
static int mouse_hidden=0; | | |
| | |
| | |
//extern unsigned int key_wparam, key_lparam, key_msg; | | |
void keyboard_handler(); | | |
extern int WMKey_Handler_Ready; | | |
| | |
HDC hDC; | | |
HGLRC hRC; | | |
| | |
// Enable OpenGL | | |
/* | | |
VOID EnableOpenGL( HWND hWnd, HDC * hDC, HGLRC * hRC ) | | |
{ | | |
PIXELFORMATDESCRIPTOR pfd; | | |
int iFormat; | | |
| | |
// get the device context (DC) | | |
*hDC = GetDC( hWnd ); | | |
| | |
// set the pixel format for the DC | | |
ZeroMemory( &pfd, sizeof( pfd ) ); | | |
pfd.nSize = sizeof( pfd ); | | |
pfd.nVersion = 1; | | |
pfd.dwFlags = PFD_DRAW_TO_WINDOW | | | |
PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; | | |
pfd.iPixelType = PFD_TYPE_RGBA; | | |
pfd.cColorBits = 24; | | |
//pfd.cDepthBits = 16; | | |
pfd.cDepthBits = 0;//we don't use depth buffering. | | |
pfd.iLayerType = PFD_MAIN_PLANE; | | |
iFormat = ChoosePixelFormat( *hDC, &pfd ); | | |
SetPixelFormat( *hDC, iFormat, &pfd ); | | |
| | |
#ifdef OGL_RUNTIME_LOAD | | |
ogl_init_load_library(); | | |
#endif | | |
| | |
// create and enable the render context (RC) | | |
*hRC = wglCreateContext( *hDC ); | | |
wglMakeCurrent( *hDC, *hRC ); | | |
| | |
} | | |
| | |
// Disable OpenGL | | |
| | |
VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC ) | | |
{ | | |
wglMakeCurrent( NULL, NULL ); | | |
wglDeleteContext( hRC ); | | |
ReleaseDC( hWnd, hDC ); | | |
} | | |
*/ | | |
static void finiObjects() | | |
{ | | |
if(mouse_hidden) | | |
ShowCursor(TRUE); | | |
| | |
// DisableOpenGL( g_hWnd, hDC, hRC ); | | |
} | | |
| | |
| | |
void PumpMessages(void) | | |
{ | | |
MSG msg; | | |
| | |
while (PeekMessage(&msg,NULL,0,0,PM_REMOVE|PM_NOYIELD)) | | |
{ | | |
TranslateMessage(&msg); | | |
DispatchMessage(&msg); | | |
} | | |
} | | |
| | |
long PASCAL DescentWndProc(HWND hWnd,UINT message, | | |
WPARAM wParam,LPARAM lParam ) | | |
{ | | |
switch(message) | | |
{ | | |
| | |
case WM_KEYDOWN: | | |
case WM_KEYUP: | | |
if (WMKey_Handler_Ready) { | | |
// key_wparam=wParam; key_lparam=lParam; key_msg=message; | | |
keyboard_handler(); | | |
} | | |
break; | | |
case WM_MOUSEMOVE: | | |
case WM_LBUTTONDOWN: | | |
case WM_LBUTTONUP: | | |
case WM_RBUTTONDOWN: | | |
case WM_RBUTTONUP: | | |
case WM_NCMOUSEMOVE: | | |
case WM_NCLBUTTONDOWN: | | |
case WM_NCLBUTTONUP: | | |
case WM_NCRBUTTONDOWN: | | |
case WM_NCRBUTTONUP: | | |
break; | | |
case WM_PALETTECHANGED: | | |
case WM_PALETTEISCHANGING: | | |
return 0; | | |
case WM_ACTIVATEAPP: | | |
// Win32_Key_Hook(wParam); | | |
// DPH: This doesn't work... no idea why not... | | |
break; | | |
case WM_DESTROY: | | |
finiObjects(); | | |
PostQuitMessage(0); | | |
break; | | |
} | | |
return DefWindowProc(hWnd,message,wParam,lParam); | | |
} | | |
| | |
void arch_init_start() | | void arch_init_start() |
{ | | { |
WNDCLASS wcDescentClass; | | |
| | |
wcDescentClass.lpszClassName = "WinD1X"; | | |
wcDescentClass.hInstance = hInst; | | |
wcDescentClass.lpfnWndProc = DescentWndProc; | | |
wcDescentClass.hCursor = LoadCursor(NULL, IDC_ARROW); | | |
wcDescentClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); | | |
wcDescentClass.lpszMenuName = NULL; | | |
wcDescentClass.hbrBackground = NULL; | | |
wcDescentClass.style = CS_OWNDC; | | |
wcDescentClass.cbClsExtra = 0; | | |
wcDescentClass.cbWndExtra = 0; | | |
| | |
// Register the class | | |
RegisterClass(&wcDescentClass); | | |
g_hWnd = CreateWindowEx(0, | | |
"WinD1X", | | |
"Descent", | | |
WS_POPUP | WS_SYSMENU, | | |
// WS_OVERLAPPED | WS_BORDER, | | |
0, 0, | | |
GetSystemMetrics(SM_CXSCREEN), | | |
GetSystemMetrics(SM_CYSCREEN), | | |
NULL, | | |
NULL, | | |
hInst, | | |
NULL | | |
); | | |
| | |
if (!g_hWnd) return; // CRAP! | | |
ShowWindow(g_hWnd,SW_SHOWNORMAL); | | |
UpdateWindow(g_hWnd); | | |
| | |
// EnableOpenGL( g_hWnd, &hDC, &hRC); | | |
} | | } |
| | |
extern void key_init(void); | | |
extern void mouse_init(void); | | |
//added/changed 3/7/99 Owen Evans (next line) | | |
extern void joy_init(int joyid); | | |
| | |
void arch_init() | | void arch_init() |
{ | | { |
| | |
ShowCursor(FALSE); | | |
mouse_hidden = 1; | | |
| | |
key_init(); | | |
mouse_init(); | | |
joy_init(JOYSTICKID1); | | |
printf("arch_init successfully completed\n"); | | |
} | | } |