3dExplorer.cpp
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:5k
- // 3dExplorer.cpp : Defines the entry point for the application.
- ///////////////////////////////////////////////
- //作者:吴雪平 2002-6-17日修改
- //管理整个程序运行
- #include "stdafx.h"
- #include "CGL.h"
- #include "heightmapscene.h"
- ///////////////////////////////////////////////
- INPUT Input;
- CGL cGL;
- //CAudioPlay cAudioPlay; //need for dx8.0
- CHeightmapScene m_cHeightmapScene;
- ///////////////////////////////////////////////
- bool InitEngine()
- {
- /*f(!cAudioPlay.InitAudioPlay())
- {
- AudioOk=false;
- MessageBox(0, "cAudioPlay error", "Error", MB_OK | MB_ICONERROR);
- }
- */
- if(!m_cHeightmapScene.InitHeightmapScene(&Input))
- {
- MessageBox(0, "cText error // 3dExplorer.cpp ", "Error", MB_OK | MB_ICONERROR);
- return FALSE;
- }
- return true;
- }
- GLvoid DrawGLScene()
- {
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
- glLoadIdentity();
- ////////////////////////////////
- m_cHeightmapScene.RenderHeightmapScene();
- ////////////////////////////
- }
- LRESULT CALLBACK WndProc( HWND hWnd,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
- {
- // Used later on to get the size of the window
- // Tells Windows we want to check the message
- switch (message)
- {
- case WM_CREATE: // Window creation
- if (!cGL.InitGL(800,600,1,hWnd))
- { // Init failed
- cGL.DestroyGL(); // Shutdown GL
- PostQuitMessage(0); // Exit programm
- }
- ShowCursor(FALSE); // Hide mouse
- break;
- case WM_DESTROY: // Windows being destroyed
- case WM_CLOSE: // Windows being closed
- cGL.DestroyGL(); // Shutown GL
- ShowCursor(TRUE); // Show mouse
- PostQuitMessage(0); // Quit the program
- break;
- case WM_KEYDOWN: // Key Being Held Down
- Input.keys[wParam] = true;
- break;
- case WM_KEYUP: // Key Is Released
- Input.keys[wParam] = false;
- break;
- case WM_LBUTTONDOWN: // Left mouse button is pressed
- Input.mouseButtons[0]=true;
- break;
- case WM_LBUTTONUP: // Left mouse button is pressed
- Input.mouseButtons[0]=false;
- break;
- case WM_RBUTTONDOWN:
- // Right mouse button is pressed
- // cGL.ChangeFOVAngle(1);
- Input.mouseButtons[1]=true;
- break;
- case WM_RBUTTONUP:
- cGL.ChangeFOVAngle(0);
- // Right mouse button is pressed
- Input.mouseButtons[1]=false;
- break;
- case WM_MOUSEMOVE:
- Input.mousePos.x = LOWORD(lParam); // Position of the cursor
- Input.mousePos.y = HIWORD(lParam);
- break;
- case WM_SIZE: // Resizing the screen
- cGL.Resize(LOWORD(lParam),HIWORD(lParam));
- break;
- default:
- // Pass windows messages
- return (DefWindowProc(hWnd, message, wParam, lParam));
- }
- return (0);
- }
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
- {
- MSG msg; // Windows message structure
- WNDCLASS wc; // Windows class structure used to set up the type of window
- HWND hWnd; // Storage for window handle
-
- wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
- wc.lpfnWndProc = (WNDPROC) WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = NULL;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = NULL;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = "3dExplorer";
- if(!RegisterClass(&wc))
- {
- MessageBox(0, "Failed to register the window class", "Error", MB_OK | MB_ICONERROR);
- return FALSE;
- }
- hWnd = CreateWindow(
- "3dExplorer",
- "Exploring in 3D world !", // Title appearing at the top of the window
- WS_POPUP |
- WS_CLIPCHILDREN |
- WS_CLIPSIBLINGS,
-
- 0, // The position of the window on the screen
- 0,
- 800, // The width and height of the window
- 600,
- NULL,
- NULL,
- hInstance,
- NULL);
- if (!hWnd)
- {
- MessageBox(0, "Window creation error", "Error", MB_OK | MB_ICONERROR);
- return FALSE;
- }
- ShowWindow(hWnd, SW_SHOW);
- UpdateWindow(hWnd);
- SetFocus(hWnd);
-
- if(!InitEngine())
- {
- MessageBox(0, "InitEngine error", "Error", MB_OK | MB_ICONERROR);
- return FALSE;
- }
- while (1)
- {
- // Process All Messages
- while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
- {
- if (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- else
- {
- return TRUE;
- }
- }
-
- DrawGLScene();
- cGL.SwapBuffers();
- //按鼠标右键放大
- if(Input.mouseButtons[1])cGL.ChangeFOVAngle(1);
- //按ESC键退出
- if (Input.keys[VK_ESCAPE]) SendMessage(hWnd, WM_CLOSE, 0, 0);
- }
- return 0;
- }