Skip to content

Commit 76ec92b

Browse files
committed
Added some rendering code
1 parent b42f010 commit 76ec92b

File tree

1 file changed

+62
-10
lines changed

1 file changed

+62
-10
lines changed

src/main.cpp

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,80 @@
33
#include <SDL2/SDL.h>
44
#include <SDL2/SDL_opengl.h>
55

6+
#include <GL/gl.h>
7+
#include <GL/glu.h>
8+
9+
enum PieceType {
10+
NO_PIECE, WHITE_PIECE, BLACK_PIECE
11+
}
612

713
void initOpenGL() {
814
glEnable(GL_DEPTH_TEST);
915
glEnable(GL_TEXTURE_2D);
1016
glEnable (GL_BLEND);
1117
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
18+
glClearColor(1.f, 1.f, 1.f, 1.f);
1219
}
1320

1421
/* function to reset our viewport after a window resize */
15-
int updateViewport( int width, int height ) {
16-
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
22+
int updateViewport(int width, int height) {
23+
glViewport(0, 0, width, height);
1724
glMatrixMode(GL_PROJECTION);
1825
glLoadIdentity ();
19-
gluOrtho2D(0, 1, 0, 1);
26+
gluOrtho2D(0, 1, 1, 0);
2027

2128
glMatrixMode(GL_MODELVIEW);
2229
}
2330

31+
bool handleMouseButtonEvent(const SDL_MouseButtonEvent& event) {
32+
std::cout << "mouse click on " << event.x << " " << event.y << std::endl;
33+
34+
return true;
35+
}
36+
37+
bool handleKeyboardEvent(const SDL_KeyboardEvent& event) {
38+
if(event.keysym.sym == SDLK_ESCAPE) {
39+
return false;
40+
}
41+
//TODO: key-specific code
42+
return true;
43+
}
44+
45+
bool handleQuitEvent(const SDL_QuitEvent& event) {
46+
return false;
47+
}
48+
49+
// Returns true if the program should continue running, false if it should exit
50+
bool handleEvent(const SDL_Event& event) {
51+
switch(event.type) {
52+
case SDL_MOUSEBUTTONDOWN:
53+
case SDL_MOUSEBUTTONUP:
54+
return handleMouseButtonEvent(event.button);
55+
case SDL_KEYUP:
56+
case SDL_KEYDOWN:
57+
return handleKeyboardEvent(event.key);
58+
case SDL_QUIT:
59+
return handleQuitEvent(event.quit);
60+
}
61+
return true;
62+
}
63+
2464
void render(SDL_Renderer* displayRenderer) {
65+
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
2566

67+
glBegin(GL_QUADS);
68+
glColor3f(1.0, 0., 0.);
69+
glVertex2d(0.0, 0.0);
70+
glVertex2d(0.0, 0.5);
71+
glVertex2d(0.5, 0.5);
72+
glVertex2d(0.5, 0.0);
73+
glEnd();
2674

2775
SDL_RenderPresent(displayRenderer);
2876
}
2977

3078

31-
int
32-
main(int argc, char *argv[])
33-
{
79+
int main(int argc, char *argv[]) {
3480
SDL_Init(SDL_INIT_VIDEO);
3581
SDL_Window* displayWindow;
3682
SDL_Renderer* displayRenderer;
@@ -40,19 +86,25 @@ main(int argc, char *argv[])
4086
/*TODO: Check that we have OpenGL */
4187
if ((displayRendererInfo.flags & SDL_RENDERER_ACCELERATED) == 0 ||
4288
(displayRendererInfo.flags & SDL_RENDERER_TARGETTEXTURE) == 0) {
43-
/*TODO: Handle this. We have no render surface and not accelerated. */
4489
std::cout << "Unable to create a window using accelerated graphics." << std::endl;
90+
return 0;
4591
}
4692

4793

4894
initOpenGL();
4995

5096
updateViewport(800, 600);
5197

52-
render(displayRenderer);
53-
98+
bool running = true;
99+
while(running) {
100+
SDL_Event event;
101+
while(SDL_PollEvent(&event)) {
102+
running = handleEvent(event);
103+
}
104+
render(displayRenderer);
105+
SDL_Delay(100);
106+
}
54107

55-
SDL_Delay(5000);
56108
SDL_Quit();
57109

58110
return 0;

0 commit comments

Comments
 (0)