1+ #include < iostream>
2+
3+ #include < SDL2/SDL.h>
4+ #include < SDL2/SDL_opengl.h>
5+
6+
7+ void initOpenGL () {
8+ glEnable (GL_DEPTH_TEST);
9+ glEnable (GL_TEXTURE_2D);
10+ glEnable (GL_BLEND);
11+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
12+ }
13+
14+ /* function to reset our viewport after a window resize */
15+ int updateViewport ( int width, int height ) {
16+ glViewport (0 , 0 , (GLsizei) w, (GLsizei) h);
17+ glMatrixMode (GL_PROJECTION);
18+ glLoadIdentity ();
19+ gluOrtho2D (0 , 1 , 0 , 1 );
20+
21+ glMatrixMode (GL_MODELVIEW);
22+ }
23+
24+ void render (SDL_Renderer* displayRenderer) {
25+
26+
27+ SDL_RenderPresent (displayRenderer);
28+ }
29+
30+
31+ int
32+ main (int argc, char *argv[])
33+ {
34+ SDL_Init (SDL_INIT_VIDEO);
35+ SDL_Window* displayWindow;
36+ SDL_Renderer* displayRenderer;
37+ SDL_RendererInfo displayRendererInfo;
38+ SDL_CreateWindowAndRenderer (800 , 600 , SDL_WINDOW_OPENGL, &displayWindow, &displayRenderer);
39+ SDL_GetRendererInfo (displayRenderer, &displayRendererInfo);
40+ /* TODO: Check that we have OpenGL */
41+ if ((displayRendererInfo.flags & SDL_RENDERER_ACCELERATED) == 0 ||
42+ (displayRendererInfo.flags & SDL_RENDERER_TARGETTEXTURE) == 0 ) {
43+ /* TODO: Handle this. We have no render surface and not accelerated. */
44+ std::cout << " Unable to create a window using accelerated graphics." << std::endl;
45+ }
46+
47+
48+ initOpenGL ();
49+
50+ updateViewport (800 , 600 );
51+
52+ render (displayRenderer);
53+
54+
55+ SDL_Delay (5000 );
56+ SDL_Quit ();
57+
58+ return 0 ;
59+ }
0 commit comments