From fe6a3bfdb022b84c65df82e26d9f54d480a54f87 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 7 Jun 2014 11:40:56 -0400 Subject: [PATCH] add initial SDL/OpenGL template --- .gitignore | 1 + Makefile | 22 +++++++++++++++ ftgl_testing.cc | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 ftgl_testing.cc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dbc8b5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/ftgl_testing diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..be951f4 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +FILE := ftgl_testing +TARGET := $(FILE) + +CXXFLAGS := $(shell sdl2-config --cflags) $(shell freetype-config --cflags) +ifdef WIN32 +LIBS := -lopengl32 -lglu32 -lmingw32 +CXX := mingw32-g++ +TARGET := $(TARGET).exe +else +LIBS := -lGL -lGLU `sdl2-config --libs` +endif +LIBS += -lftgl $(shell freetype-config --libs) +LDFLAGS := $(LIBS) $(shell sdl2-config --libs) + + +all: $(TARGET) + +$(TARGET): $(FILE).cc + $(CXX) -o $(TARGET) $(CXXFLAGS) $< $(LDFLAGS) + +clean: + -rm -f $(TARGET) *~ *.o diff --git a/ftgl_testing.cc b/ftgl_testing.cc new file mode 100644 index 0000000..7d7a366 --- /dev/null +++ b/ftgl_testing.cc @@ -0,0 +1,75 @@ +#include +#include +#include +#include + +#define WIDTH 500 +#define HEIGHT 500 + +void init(void) +{ + glViewport(0, 0, WIDTH, HEIGHT); + glClearColor (0.0, 0.0, 0.0, 0.0); + glEnable(GL_DEPTH_TEST); + glShadeModel(GL_FLAT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60.0, (GLfloat)WIDTH/(GLfloat)WIDTH, 1.0, 30.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -3.6); +} + +void display(SDL_Window * window) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glBegin(GL_QUADS); + glVertex3f(-2.0, -1.0, 0.0); + glVertex3f(-2.0, 1.0, 0.0); + glVertex3f(0.0, 1.0, 0.0); + glVertex3f(0.0, -1.0, 0.0); + 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); + } + } +}