-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCApp.cpp
93 lines (78 loc) · 1.66 KB
/
CApp.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "CApp.h"
#include "./RayTrace/abLinearAlgebra/Vector.h"
CApp::CApp()
{
isRunning = true;
pWindow = NULL;
pRenderer = NULL;
}
bool CApp::OnInit()
{
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
return false;
}
if (!SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl"))
{
printf("Warning: Could not set SDL_HINT_RENDER_DRIVER to 'opengl'\n");
}
pWindow = SDL_CreateWindow("abRayTracer", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_SHOWN);
if (pWindow != NULL)
{
pRenderer = SDL_CreateRenderer(pWindow, -1, 0);
m_image.Initialise(1280, 720, pRenderer);
SDL_SetRenderDrawColor(pRenderer, 255, 255, 255, 255);
SDL_RenderClear(pRenderer);
m_scene.Render(m_image);
m_image.Display();
SDL_RenderPresent(pRenderer);
}
else
{
return false;
}
return true;
}
int CApp::OnExecute()
{
SDL_Event event;
if (OnInit() == false)
{
return -1;
}
while (isRunning)
{
while (SDL_PollEvent(&event) != 0)
{
OnEvent(&event);
}
OnLoop();
OnRender();
}
return 1;
}
void CApp::OnEvent(SDL_Event *event)
{
if (event->type == SDL_QUIT)
{
isRunning = false;
}
}
void CApp::OnLoop()
{
}
void CApp::OnRender()
{
// SDL_SetRenderDrawColor(pRenderer, 255, 255, 255, 255);
// SDL_RenderClear(pRenderer);
// m_scene.Render(m_image);
// m_image.Display();
// SDL_RenderPresent(pRenderer);
}
void CApp::OnExit()
{
SDL_DestroyRenderer(pRenderer);
SDL_DestroyWindow(pWindow);
pWindow = NULL;
SDL_Quit();
}