From eae60acb14c2d030df13318056b6cca02b2bdbe3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 11 Oct 2015 15:20:25 -0400 Subject: [PATCH] import sdl-opengl-bare template --- .gitignore | 1 + Makefile | 21 ++++++++++++++ app.cc | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 app.cc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6750dba --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/app diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d81003d --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +FILE := app +TARGET := $(FILE) + +CCFLAGS := $(shell sdl2-config --cflags) +ifeq (MINGW,$(findstring MINGW,$(shell uname))) +LIBS := -lopengl32 -lglu32 -lmingw32 +CXX := mingw32-g++ +TARGET := $(TARGET).exe +else +LIBS := -lGL -lGLU `sdl2-config --libs` +endif +LDFLAGS := $(LIBS) $(shell sdl2-config --libs) + + +all: $(TARGET) + +$(TARGET): $(FILE).cc + $(CXX) -o $(TARGET) $(CCFLAGS) $< $(LDFLAGS) + +clean: + -rm -f $(TARGET) *~ *.o diff --git a/app.cc b/app.cc new file mode 100644 index 0000000..00d1d46 --- /dev/null +++ b/app.cc @@ -0,0 +1,82 @@ +#include +#include +#include +#include + +#define WIDTH 800 +#define HEIGHT 800 + +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); + } + } +}