?? 碰撞檢測.cpp
字號:
// 碰撞檢測.cpp : Defines the entry point for the application.
// 學程序編游戲系列叢書
// 唐明理 E_mail: cqtmL@163.com
//====================================================================
#include "stdafx.h"
#include "OpenGL.h"
//////////////////////////////////////////////////////////
OpenGL* m_OpenGL;
HDC hDC;
HGLRC hRC=NULL;
HWND hWnd=NULL;
int Width = 800;
int Height= 600;
int bits = 16;
bool Lbutdown;
///////////////////////////////////////////////////////////
void GameLoop()
{ MSG msg;
BOOL fMessage;
PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE);
while(msg.message != WM_QUIT)
{ fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE);
if(fMessage)
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
else m_OpenGL->Render();
}
}
LRESULT WINAPI MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam )
{ switch(message)
{ case WM_CREATE:
hDC = GetDC(hWnd);
m_OpenGL->SetupPixelFormat(hDC);
return 0; break;
case WM_CLOSE:
m_OpenGL->CleanUp();
PostQuitMessage(0);
return 0; break;
case WM_SIZE:
Height = HIWORD(lParam);
Width = LOWORD(lParam);
if (Height==0) Height=1;
m_OpenGL->init(Width,Height);
return 0; break;
case WM_DESTROY:
PostQuitMessage(0);
return 0; break;
case WM_LBUTTONDOWN: Lbutdown=true ;break;
case WM_LBUTTONUP: Lbutdown=false;break;
case WM_KEYUP:
switch (wParam)
{ case VK_ESCAPE:
m_OpenGL->CleanUp();
PostQuitMessage(0);
return 0;break;
}
default: break;
}
return (DefWindowProc(hWnd, message, wParam, lParam));
}
INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,INT )
{ bool fullScreen =TRUE;
DWORD dwExStyle;
DWORD dwStyle;
RECT windowRect;
int nX=0,nY=0;
if (MessageBox(NULL,"使用全屏模式嗎?", "將進入OpenGL,選擇顯示模式",
MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL)==IDNO)
{fullScreen =false;}
if (fullScreen)
{ DEVMODE dmScr;
memset(&dmScr,0,sizeof(dmScr));
dmScr.dmSize=sizeof(dmScr);
dmScr.dmPelsWidth = Width;
dmScr.dmPelsHeight= Height;
dmScr.dmBitsPerPel= 16;
dmScr.dmDisplayFrequency=75;
dmScr.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;
if (ChangeDisplaySettings(&dmScr, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{fullScreen=FALSE;}
dwExStyle=WS_EX_APPWINDOW;
dwStyle=WS_POPUP;
ShowCursor(FALSE);
}
else
{ dwExStyle=WS_EX_APPWINDOW|WS_EX_WINDOWEDGE;
dwStyle=WS_OVERLAPPEDWINDOW;
int wid=GetSystemMetrics(SM_CXSCREEN);
int hei=GetSystemMetrics(SM_CYSCREEN);
nX=(wid-Width)/2;nY=(hei-Height)/2;
}
//-------------------------------------------------------------------
AdjustWindowRectEx(&windowRect,dwStyle,FALSE,dwExStyle);
char cc[]="tml";
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
cc, NULL };
RegisterClassEx( &wc );
m_OpenGL=new OpenGL();//
hWnd = CreateWindowEx(NULL,cc,"學OpenGL編3D游戲 [ 11.碰撞檢測 ] 鍵盤(↑進 ↓退 →右 ←左 UP仰 DOWM俯)",
dwStyle|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
nX, nY,Width, Height,
NULL,NULL,hInst,NULL);
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
GameLoop();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -