#include "gl3w.h" #include #include #include #include FT_FREETYPE_H using namespace std; #define WIDTH 500 #define HEIGHT 500 static FT_Library ft; static FT_Face face; void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); } void display(SDL_Window * window) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); SDL_GL_SwapWindow(window); } int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_VIDEO)) { cerr << "Failed to initialize SDL!" << endl; 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) { cerr << "Failed to create window!" << endl; SDL_Quit(); return 2; } SDL_GLContext gl_context = SDL_GL_CreateContext(window); if (gl3wInit() != 0) { cerr << "Failed to gl3wInit()" << endl; SDL_Quit(); return 2; } if (!gl3wIsSupported(3, 0)) { cerr << "OpenGL 3.0 is not supported!" << endl; SDL_Quit(); return 2; } if (FT_Init_FreeType(&ft) != 0) { cerr << "Could not FT_Init_FreeType()" << endl; return 2; } if (FT_New_Face(ft, "/usr/share/fonts/truetype/freefont/FreeMono.ttf", 0, &face) != 0) { cerr << "Could not load FreeMono.ttf" << endl; return 2; } FT_Set_Pixel_Sizes(face, 0, 20); 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); } } }