| Index: third_party/gles_book_examples/Common/Source/Win32/esUtil_win32.c
|
| ===================================================================
|
| --- third_party/gles_book_examples/Common/Source/Win32/esUtil_win32.c (revision 35483)
|
| +++ third_party/gles_book_examples/Common/Source/Win32/esUtil_win32.c (working copy)
|
| @@ -1,183 +0,0 @@
|
| -//
|
| -// Book: OpenGL(R) ES 2.0 Programming Guide
|
| -// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner
|
| -// ISBN-10: 0321502795
|
| -// ISBN-13: 9780321502797
|
| -// Publisher: Addison-Wesley Professional
|
| -// URLs: http://safari.informit.com/9780321563835
|
| -// http://www.opengles-book.com
|
| -//
|
| -
|
| -// esUtil_win32.c
|
| -//
|
| -// This file contains the Win32 implementation of the windowing functions.
|
| -
|
| -
|
| -///
|
| -// Includes
|
| -//
|
| -#define WIN32_LEAN_AND_MEAN
|
| -#include <windows.h>
|
| -#include "esUtil.h"
|
| -
|
| -//////////////////////////////////////////////////////////////////
|
| -//
|
| -// Private Functions
|
| -//
|
| -//
|
| -
|
| -///
|
| -// ESWindowProc()
|
| -//
|
| -// Main window procedure
|
| -//
|
| -LRESULT WINAPI ESWindowProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
| -{
|
| - LRESULT lRet = 1;
|
| -
|
| - switch (uMsg)
|
| - {
|
| - case WM_CREATE:
|
| - break;
|
| -
|
| - case WM_PAINT:
|
| - {
|
| - ESContext *esContext = (ESContext*)(LONG_PTR) GetWindowLongPtr ( hWnd, GWL_USERDATA );
|
| -
|
| - if ( esContext && esContext->drawFunc )
|
| - esContext->drawFunc ( esContext );
|
| -
|
| - ValidateRect( esContext->hWnd, NULL );
|
| - }
|
| - break;
|
| -
|
| - case WM_DESTROY:
|
| - PostQuitMessage(0);
|
| - break;
|
| -
|
| - case WM_CHAR:
|
| - {
|
| - POINT point;
|
| - ESContext *esContext = (ESContext*)(LONG_PTR) GetWindowLongPtr ( hWnd, GWL_USERDATA );
|
| -
|
| - GetCursorPos( &point );
|
| -
|
| - if ( esContext && esContext->keyFunc )
|
| - esContext->keyFunc ( esContext, (unsigned char) wParam,
|
| - (int) point.x, (int) point.y );
|
| -}
|
| - break;
|
| -
|
| - default:
|
| - lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
|
| - break;
|
| - }
|
| -
|
| - return lRet;
|
| -}
|
| -
|
| -//////////////////////////////////////////////////////////////////
|
| -//
|
| -// Public Functions
|
| -//
|
| -//
|
| -
|
| -///
|
| -// WinCreate()
|
| -//
|
| -// Create Win32 instance and window
|
| -//
|
| -GLboolean WinCreate ( ESContext *esContext, const char *title )
|
| -{
|
| - WNDCLASS wndclass = {0};
|
| - DWORD wStyle = 0;
|
| - RECT windowRect;
|
| - HINSTANCE hInstance = GetModuleHandle(NULL);
|
| -
|
| -
|
| - wndclass.style = CS_OWNDC;
|
| - wndclass.lpfnWndProc = (WNDPROC)ESWindowProc;
|
| - wndclass.hInstance = hInstance;
|
| - wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
|
| - wndclass.lpszClassName = "opengles2.0";
|
| -
|
| - if (!RegisterClass (&wndclass) )
|
| - return FALSE;
|
| -
|
| - wStyle = WS_VISIBLE | WS_POPUP | WS_BORDER | WS_SYSMENU | WS_CAPTION;
|
| -
|
| - // Adjust the window rectangle so that the client area has
|
| - // the correct number of pixels
|
| - windowRect.left = 0;
|
| - windowRect.top = 0;
|
| - windowRect.right = esContext->width;
|
| - windowRect.bottom = esContext->height;
|
| -
|
| - AdjustWindowRect ( &windowRect, wStyle, FALSE );
|
| -
|
| -
|
| -
|
| - esContext->hWnd = CreateWindow(
|
| - "opengles2.0",
|
| - title,
|
| - wStyle,
|
| - 0,
|
| - 0,
|
| - windowRect.right - windowRect.left,
|
| - windowRect.bottom - windowRect.top,
|
| - NULL,
|
| - NULL,
|
| - hInstance,
|
| - NULL);
|
| -
|
| - // Set the ESContext* to the GWL_USERDATA so that it is available to the
|
| - // ESWindowProc
|
| - SetWindowLongPtr ( esContext->hWnd, GWL_USERDATA, (LONG) (LONG_PTR) esContext );
|
| -
|
| -
|
| - if ( esContext->hWnd == NULL )
|
| - return GL_FALSE;
|
| -
|
| - ShowWindow ( esContext->hWnd, TRUE );
|
| -
|
| - return GL_TRUE;
|
| -}
|
| -
|
| -///
|
| -// winLoop()
|
| -//
|
| -// Start main windows loop
|
| -//
|
| -void WinLoop ( ESContext *esContext )
|
| -{
|
| - MSG msg = { 0 };
|
| - int done = 0;
|
| - DWORD lastTime = GetTickCount();
|
| -
|
| - while (!done)
|
| - {
|
| - int gotMsg = (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0);
|
| - DWORD curTime = GetTickCount();
|
| - float deltaTime = (float)( curTime - lastTime ) / 1000.0f;
|
| - lastTime = curTime;
|
| -
|
| - if ( gotMsg )
|
| - {
|
| - if (msg.message==WM_QUIT)
|
| - {
|
| - done=1;
|
| - }
|
| - else
|
| - {
|
| - TranslateMessage(&msg);
|
| - DispatchMessage(&msg);
|
| - }
|
| - }
|
| - else
|
| - SendMessage( esContext->hWnd, WM_PAINT, 0, 0 );
|
| -
|
| - // Call update function if registered
|
| - if ( esContext->updateFunc != NULL )
|
| - esContext->updateFunc ( esContext, deltaTime );
|
| - }
|
| -}
|
|
|