[Remove] Removed GLWindow.* as we no longer use them.
This commit is contained in:
parent
79872d8452
commit
ac1923fc46
@ -6,9 +6,14 @@ LIBS += -lGL \
|
|||||||
-lGLU \
|
-lGLU \
|
||||||
-lz \
|
-lz \
|
||||||
-ltinyxml
|
-ltinyxml
|
||||||
win32: {
|
win32: {
|
||||||
LIBS -= -lGL -lGLU
|
LIBS -= -lGL \
|
||||||
LIBS += -lkernel32 -luser32 -lgdi32 -lopengl32 -lglu32
|
-lGLU
|
||||||
|
LIBS += -lkernel32 \
|
||||||
|
-luser32 \
|
||||||
|
-lgdi32 \
|
||||||
|
-lopengl32 \
|
||||||
|
-lglu32
|
||||||
}
|
}
|
||||||
HEADERS += ../src/Actor/Player.h \
|
HEADERS += ../src/Actor/Player.h \
|
||||||
../src/Collision/AABB.h \
|
../src/Collision/AABB.h \
|
||||||
@ -19,7 +24,6 @@ HEADERS += ../src/Actor/Player.h \
|
|||||||
../src/Level/Level.h \
|
../src/Level/Level.h \
|
||||||
../src/Level/Layer.h \
|
../src/Level/Layer.h \
|
||||||
../src/Level/Tileset.h \
|
../src/Level/Tileset.h \
|
||||||
../src/Main/GLWindow.h \
|
|
||||||
../src/Main/Game.h \
|
../src/Main/Game.h \
|
||||||
../src/Math/Timer.h \
|
../src/Math/Timer.h \
|
||||||
../src/Math/Rect.h \
|
../src/Math/Rect.h \
|
||||||
@ -53,7 +57,6 @@ SOURCES += ../src/Actor/Player.cpp \
|
|||||||
../src/Level/Tileset.cpp \
|
../src/Level/Tileset.cpp \
|
||||||
../src/Level/Level.cpp \
|
../src/Level/Level.cpp \
|
||||||
../src/Level/Layer.cpp \
|
../src/Level/Layer.cpp \
|
||||||
../src/Main/GLWindow.cpp \
|
|
||||||
../src/Main/Game.cpp \
|
../src/Main/Game.cpp \
|
||||||
../src/Main/main.cpp \
|
../src/Main/main.cpp \
|
||||||
../src/Math/Vec2.cpp \
|
../src/Math/Vec2.cpp \
|
||||||
|
@ -1,240 +0,0 @@
|
|||||||
#ifdef _WIN32
|
|
||||||
#include <ctime>
|
|
||||||
#include <iostream>
|
|
||||||
#include <Windows.h>
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
#include "../glx/wglext.h"
|
|
||||||
#include "GLWindow.h"
|
|
||||||
#include "Game.h"
|
|
||||||
#include "../IO/Input.h"
|
|
||||||
|
|
||||||
typedef HGLRC(APIENTRYP PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC, HGLRC, const int*);
|
|
||||||
PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = NULL;
|
|
||||||
|
|
||||||
GLWindow::GLWindow(HINSTANCE hInstance) :
|
|
||||||
_isRunning(false),
|
|
||||||
_game(NULL),
|
|
||||||
_hinstance(hInstance),
|
|
||||||
_lastTime(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
GLWindow::~GLWindow() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool GLWindow::Create(int width, int height, int bpp, bool fullscreen) {
|
|
||||||
DWORD dwExStyle; // Window extended style.
|
|
||||||
DWORD dwStyle; // Window style.
|
|
||||||
|
|
||||||
_isFullScreen = fullscreen; // Store the fullscreen flag.
|
|
||||||
|
|
||||||
_windowRect.left = (long)0; // Set left value to zero.
|
|
||||||
_windowRect.right = (long)width; // Set right value to the requested width.
|
|
||||||
_windowRect.top = (long)0; // Set top value to zero.
|
|
||||||
_windowRect.bottom = (long)height; // Set bottom value to the requested height.
|
|
||||||
|
|
||||||
// Fill out the class structure.
|
|
||||||
ZeroMemory(&_windowClass, sizeof(_windowClass));
|
|
||||||
_windowClass.cbSize = sizeof(WNDCLASSEX);
|
|
||||||
_windowClass.style = CS_HREDRAW | CS_VREDRAW;
|
|
||||||
_windowClass.lpfnWndProc = GLWindow::StaticWndProc; // Set out static method as the next event.
|
|
||||||
_windowClass.cbClsExtra = 0;
|
|
||||||
_windowClass.cbWndExtra = 0;
|
|
||||||
_windowClass.hInstance = _hinstance;
|
|
||||||
_windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // Default icon.
|
|
||||||
_windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); // Default arrow.
|
|
||||||
_windowClass.hbrBackground = NULL; // Don't need a background.
|
|
||||||
_windowClass.lpszMenuName = NULL; // No menu.
|
|
||||||
_windowClass.lpszClassName = TEXT("GLClass");
|
|
||||||
_windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows logo, small icon.
|
|
||||||
|
|
||||||
// Register the window class.
|
|
||||||
if(!RegisterClassEx(&_windowClass)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(_isFullScreen) {
|
|
||||||
// Then we need to change the display mode.
|
|
||||||
DEVMODE dmScreenSettings; // Device mode.
|
|
||||||
|
|
||||||
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));
|
|
||||||
dmScreenSettings.dmSize = sizeof(dmScreenSettings);
|
|
||||||
|
|
||||||
dmScreenSettings.dmPelsWidth = width; // Screen width.
|
|
||||||
dmScreenSettings.dmPelsHeight = height; // Screen height.
|
|
||||||
dmScreenSettings.dmBitsPerPel = bpp; // Bits per pixel.
|
|
||||||
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
|
|
||||||
|
|
||||||
if(ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) {
|
|
||||||
// Setting the display mode failed, so switch to windowed mode.
|
|
||||||
MessageBox(NULL, TEXT("Display mode failed"), NULL, MB_OK);
|
|
||||||
_isFullScreen = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Are we still in fullscreen mode?
|
|
||||||
if(_isFullScreen) {
|
|
||||||
dwExStyle = WS_EX_APPWINDOW; // Window extended style.
|
|
||||||
dwStyle = WS_POPUP; // Windows style.
|
|
||||||
ShowCursor(false); // Might as well hide the mouse cursor.
|
|
||||||
} else {
|
|
||||||
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Window extended style.
|
|
||||||
dwStyle = WS_OVERLAPPEDWINDOW; // Windows style.
|
|
||||||
}
|
|
||||||
|
|
||||||
AdjustWindowRectEx(&_windowRect, dwStyle, false, dwExStyle); // Adjust window to true requested size.
|
|
||||||
|
|
||||||
// The class is registered, so now we can create our window.
|
|
||||||
_hwnd = CreateWindowEx(dwExStyle, TEXT("GLClass"), TEXT("LibD"), dwStyle,
|
|
||||||
0, 0, _windowRect.right - _windowRect.left,
|
|
||||||
_windowRect.bottom - _windowRect.top, NULL, NULL, _hinstance, this);
|
|
||||||
|
|
||||||
// Check if the window creation failed - hwnd would be NULL.
|
|
||||||
if(!_hwnd)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
_hdc = GetDC(_hwnd);
|
|
||||||
|
|
||||||
ShowWindow(_hwnd, SW_SHOW); // Display the window.
|
|
||||||
UpdateWindow(_hwnd); // Update the window.
|
|
||||||
|
|
||||||
_lastTime = GetTickCount() / 1000.0f; // Initialize the time.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLWindow::Destroy(void) {
|
|
||||||
if(_isFullScreen) {
|
|
||||||
// Change back to the desktop.
|
|
||||||
ChangeDisplaySettings(NULL, 0);
|
|
||||||
ShowCursor(true); // Show us the mouse cursor again.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLWindow::ProcessEvents(void) {
|
|
||||||
MSG msg;
|
|
||||||
|
|
||||||
// While there are messages in the queue, store them in msg.
|
|
||||||
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
|
||||||
// Process the message one by one.
|
|
||||||
TranslateMessage(&msg);
|
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLWindow::SetupPixelFormat(void) {
|
|
||||||
int pixelFormat;
|
|
||||||
|
|
||||||
PIXELFORMATDESCRIPTOR pfd = {
|
|
||||||
sizeof(PIXELFORMATDESCRIPTOR), // Size.
|
|
||||||
1, // Version.
|
|
||||||
PFD_SUPPORT_OPENGL | // OpenGL window.
|
|
||||||
PFD_DRAW_TO_WINDOW | // Render to window.
|
|
||||||
PFD_DOUBLEBUFFER, // Support double-buffering.
|
|
||||||
PFD_TYPE_RGBA, // Color type.
|
|
||||||
32, // Prefered color depth.
|
|
||||||
0, 0, 0, 0, 0, 0, // Color bits (ignored).
|
|
||||||
0, // No alpha buffer.
|
|
||||||
0, // Alpha bits (ignored).
|
|
||||||
0, // No accumulation buffer.
|
|
||||||
0, 0, 0, 0, // Accumulation bits (ignored).
|
|
||||||
16, // Depth buffer.
|
|
||||||
0, // No stencil buffer.
|
|
||||||
0, // No auxiliary buffers.
|
|
||||||
PFD_MAIN_PLANE, // Main layer.
|
|
||||||
0, // Reserverd.
|
|
||||||
0, 0, 0, // No layer, visibility, damage masks.
|
|
||||||
};
|
|
||||||
|
|
||||||
pixelFormat = ChoosePixelFormat(_hdc, &pfd);
|
|
||||||
SetPixelFormat(_hdc, pixelFormat, &pfd);
|
|
||||||
}
|
|
||||||
|
|
||||||
LRESULT GLWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
|
||||||
switch (uMsg) {
|
|
||||||
case WM_CREATE: { // Window creation.
|
|
||||||
_hdc = GetDC(hWnd);
|
|
||||||
SetupPixelFormat();
|
|
||||||
|
|
||||||
// Set the version that we want. in this case, 3.0.
|
|
||||||
int attribs[] = {
|
|
||||||
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
|
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB, 0,
|
|
||||||
0 }; // Zero indicates the end of the array.
|
|
||||||
|
|
||||||
// Create temporary context so we can get a pointer to the function.
|
|
||||||
HGLRC tmpContext = wglCreateContext(_hdc);
|
|
||||||
// Make it current.
|
|
||||||
wglMakeCurrent(_hdc, tmpContext);
|
|
||||||
|
|
||||||
// Get the function pointer.
|
|
||||||
wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC) wglGetProcAddress("wglCreateContextAttribsARB");
|
|
||||||
|
|
||||||
// If this is NULL then OpenGL 3.0 is not supported.
|
|
||||||
if(!wglCreateContextAttribsARB) {
|
|
||||||
std::cerr << "OpenGL 3.0 is not supported, falling back to GL 2.1" << std::endl;
|
|
||||||
_hglrc = tmpContext;
|
|
||||||
} else {
|
|
||||||
// Create an OpenGL 3.0 context using the new function.
|
|
||||||
_hglrc = wglCreateContextAttribsARB(_hdc, 0, attribs);
|
|
||||||
// Delete them temp context.
|
|
||||||
wglDeleteContext(tmpContext);
|
|
||||||
}
|
|
||||||
// Make the GL3 context current.
|
|
||||||
wglMakeCurrent(_hdc, _hglrc);
|
|
||||||
_isRunning = true; // Mark our window as running now.
|
|
||||||
|
|
||||||
CreateInput();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_DESTROY: // Destroy window.
|
|
||||||
case WM_CLOSE: // Windows is closing.
|
|
||||||
wglMakeCurrent(_hdc, NULL);
|
|
||||||
wglDeleteContext(_hglrc);
|
|
||||||
_isRunning = false; // Stop the main loop.
|
|
||||||
PostQuitMessage(0); // Send a WM_QUIT message.
|
|
||||||
return 0;
|
|
||||||
break;
|
|
||||||
case WM_SIZE: {
|
|
||||||
int height = HIWORD(lParam); // Retrieve width and height.
|
|
||||||
int width = LOWORD(lParam);
|
|
||||||
GetAttachedGame()->OnResize(width, height); // Call the games resize method.
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_KEYDOWN:
|
|
||||||
if(wParam == VK_ESCAPE) {
|
|
||||||
// Then send a WM_DESTROY request.
|
|
||||||
DestroyWindow(_hwnd);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
LRESULT CALLBACK GLWindow::StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
|
||||||
GLWindow* window = NULL;
|
|
||||||
|
|
||||||
// If this is the create message:
|
|
||||||
if(uMsg == WM_CREATE) {
|
|
||||||
// Get the pointer we stored during create.
|
|
||||||
window = (GLWindow*)((LPCREATESTRUCT)lParam)->lpCreateParams;
|
|
||||||
|
|
||||||
// Associate the window pointer with the hwnd for the events to acess.
|
|
||||||
SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG_PTR)window);
|
|
||||||
} else {
|
|
||||||
// If this is not a creation event, then we should have stored a pointer to the window.
|
|
||||||
window = (GLWindow*) GetWindowLongPtr(hWnd, GWL_USERDATA);
|
|
||||||
}
|
|
||||||
// Call our window's member WndProc - Allows us to create access member variables)
|
|
||||||
return window->WndProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
float GLWindow::GetElapsedSeconds(void) {
|
|
||||||
float currentTime = float(GetTickCount()) / 1000.0f;
|
|
||||||
float seconds = float(currentTime - _lastTime);
|
|
||||||
_lastTime = currentTime;
|
|
||||||
return seconds;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#ifdef _WIN32 // Stop makefiles from complaining.
|
|
||||||
#include <windows.h>
|
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
class Game;
|
|
||||||
|
|
||||||
class GLWindow {
|
|
||||||
public:
|
|
||||||
GLWindow(HINSTANCE hInstance);
|
|
||||||
~GLWindow(void);
|
|
||||||
|
|
||||||
bool Create(int width, int height, int bpp, bool fullscreen);
|
|
||||||
void Destroy(void);
|
|
||||||
void ProcessEvents(void);
|
|
||||||
void AttachGame(Game* game) { _game = game; }
|
|
||||||
|
|
||||||
bool IsRunning(void) { return _isRunning; }
|
|
||||||
void SwapBuffers(void) { ::SwapBuffers(_hdc); }
|
|
||||||
|
|
||||||
static LRESULT CALLBACK StaticWndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
||||||
LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
||||||
|
|
||||||
float GetElapsedSeconds(void);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void SetupPixelFormat(void);
|
|
||||||
Game* GetAttachedGame(void) { return _game; }
|
|
||||||
|
|
||||||
// A pointer to the application.
|
|
||||||
Game* _game;
|
|
||||||
bool _isRunning;
|
|
||||||
bool _isFullScreen;
|
|
||||||
float _lastTime;
|
|
||||||
|
|
||||||
HWND _hwnd; // Window handle.
|
|
||||||
HGLRC _hglrc; // Rendering context.
|
|
||||||
HDC _hdc; // Device context.
|
|
||||||
RECT _windowRect; // Window bound.
|
|
||||||
HINSTANCE _hinstance; // Application instance.
|
|
||||||
WNDCLASSEX _windowClass;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue
Block a user