From 256cb0b0d58a20749fb900c137d19deefb9b31e1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 13 Jan 2018 17:50:55 -0500 Subject: [PATCH] start with SDL2 OpenGL3 template --- .gitignore | 1 + Makefile | 21 +++++++++++ sdl-game-controller.c | 82 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 sdl-game-controller.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d668b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/sdl-game-controller diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..47962f8 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +FILE := sdl-game-controller +TARGET := $(FILE) + +CFLAGS := $(shell pkg-config --cflags sdl2) +ifeq (MINGW,$(findstring MINGW,$(shell uname))) +LIBS := -lopengl32 -lglu32 -lmingw32 +CC := mingw32-gcc +TARGET := $(TARGET).exe +else +LIBS := -lGL -lGLU `pkg-config --libs sdl2` +endif +LDFLAGS := $(LIBS) $(shell pkg-config --libs sdl2) + + +all: $(TARGET) + +$(TARGET): $(FILE).c + $(CC) -o $(TARGET) $(CFLAGS) $< $(LDFLAGS) + +clean: + -rm -f $(TARGET) *~ *.o diff --git a/sdl-game-controller.c b/sdl-game-controller.c new file mode 100644 index 0000000..27f7508 --- /dev/null +++ b/sdl-game-controller.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include + +#define WIDTH 500 +#define HEIGHT 500 + +void init(void) +{ + glClearColor (0.0, 0.0, 0.0, 0.0); + glEnable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glViewport(0, 0, WIDTH, HEIGHT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-0.5, WIDTH - 0.5, -0.5, HEIGHT - 0.5, -1, 1); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +void display(SDL_Window * window) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f(1, 1, 1); + glBegin(GL_QUADS); + glVertex3f(10, HEIGHT / 2, 0.0); + glVertex3f(10, 3 * HEIGHT / 4, 0.0); + glVertex3f(WIDTH / 2, 3 * HEIGHT / 4, 0.0); + glVertex3f(WIDTH / 2, HEIGHT / 2, 0.0); + glEnd(); + glColor3f(1, 0.6, 0); + glBegin(GL_LINE_LOOP); + glVertex2f(0, 0); + glVertex2f(WIDTH - 1, 0); + glVertex2f(WIDTH - 1, HEIGHT - 1); + glVertex2f(0, HEIGHT - 1); + glEnd(); + SDL_GL_SwapWindow(window); +} + +int main(int argc, char *argv[]) +{ + if (SDL_Init(SDL_INIT_VIDEO)) + { + printf("Failed to initialize SDL!\n"); + return 1; + } + + atexit(SDL_Quit); + + SDL_Window * window = SDL_CreateWindow(argv[0], + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + WIDTH, + HEIGHT, + SDL_WINDOW_OPENGL); + if (!window) + { + printf("Failed to create window!\n"); + SDL_Quit(); + return 2; + } + + SDL_GLContext gl_context = SDL_GL_CreateContext(window); + + init(); + display(window); + SDL_Event event; + while (SDL_WaitEvent(&event)) + { + if (event.type == SDL_QUIT) + break; + else if (event.type == SDL_KEYDOWN) + { + if (event.key.keysym.sym == SDLK_ESCAPE) + break; + if (event.key.keysym.sym == SDLK_RETURN) + display(window); + } + } +}