Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.32 KB | None | 0 0
  1. /*
  2.       SDL2 Render API & OpenGL Combined
  3.  
  4. clang++ -std=c++11 -stdlib=libc++ -I/SSystem/Library/Frameworks/OpenGL.framework/Headers -I/usr/local/include/SDL2 -L/usr/local/lib -L/System/Library/Frameworks/OpenGL.framework -l sdl2 -framework opengl gl.cpp -o gl
  5.  
  6. Source: https://forums.libsdl.org/viewtopic.php?t=9440&sid=087dc25c12164d8521dd92ad6cf5d430
  7. */
  8.  
  9. #include <iostream>
  10.  
  11. #include <OpenGL/OpenGL.h>
  12. #include <OpenGL/glu.h>
  13.  
  14. #include <SDL.h>
  15.  
  16. int main ( int argc, char** argv )
  17. {
  18.   SDL_Init ( SDL_INIT_VIDEO );
  19.  
  20.   // SDL_SetHint( SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES, "0" );
  21.  
  22.   SDL_Window* win = SDL_CreateWindow ( "test", 20, 20, 640, 480,
  23.                                        SDL_WINDOW_OPENGL );
  24.   SDL_GLContext glcontext = SDL_GL_CreateContext ( win );
  25.   int oglIdx = -1;
  26.   int nRD = SDL_GetNumRenderDrivers();
  27.   for ( int i = 0; i < nRD; i++ )
  28.   {
  29.     SDL_RendererInfo info;
  30.     if ( !SDL_GetRenderDriverInfo ( i, &info ) )
  31.     {
  32.       if ( !strcmp ( info.name, "opengl" ) )
  33.       {
  34.         oglIdx = i;
  35.       }
  36.     }
  37.   }
  38.   SDL_Renderer* renderer = SDL_CreateRenderer ( win, oglIdx,
  39.                            SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
  40.   SDL_GL_SetAttribute ( SDL_GL_DOUBLEBUFFER, 1 );
  41.   glMatrixMode ( GL_PROJECTION | GL_MODELVIEW );
  42.   glLoadIdentity();
  43.   glOrtho ( -320, 320, 240, -240, 0, 1 );
  44.  
  45.   SDL_Event event;
  46.   bool quit = false;
  47.   bool fs = false;
  48.  
  49.   int x;
  50.   int y;
  51.   while ( !quit )
  52.   {
  53.     while ( SDL_PollEvent ( &event ) )
  54.     {
  55.       switch( event.type )
  56.       {
  57.         case SDL_QUIT: quit = true; break;
  58.  
  59.         case SDL_MOUSEBUTTONDOWN:
  60.         {
  61.  
  62.           break;
  63.         }
  64.         case SDL_MOUSEMOTION:
  65.         {
  66.           x = event.motion.xrel;
  67.           y = event.motion.yrel;
  68.           std::cout << x << "\n";
  69.           std::cout << y << "\n";
  70.           break;
  71.         }
  72.  
  73.         case SDL_KEYDOWN:
  74.         {
  75.           switch( event.key.keysym.sym )
  76.           {
  77.             case SDLK_ESCAPE:
  78.             case SDLK_q: quit = true; break;
  79.  
  80.             case SDLK_f:
  81.             {
  82.               if( fs )
  83.               {
  84.                 SDL_SetWindowFullscreen(win, 0);
  85.                 fs = false;
  86.               }
  87.               else
  88.               {
  89.                 SDL_SetWindowFullscreen(win, SDL_WINDOW_FULLSCREEN_DESKTOP);
  90.                 fs = true;
  91.               }
  92.               break;
  93.             }
  94.           }
  95.           break;
  96.         }
  97.       }
  98.  
  99.       glClearColor ( 0, 0, 0, 0 );
  100.       glClear ( GL_COLOR_BUFFER_BIT );
  101.  
  102.       glRotatef ( 0.6, 0.0, 0.0, 1.0 );
  103.       float x = 30.0, y = 30.0;
  104.  
  105.       glBegin ( GL_TRIANGLES );
  106.       glColor3f ( 1.0, 1.0, 0.0 );
  107.       glVertex2f ( x, y + 90.0 );
  108.  
  109.       glColor3f ( 1.0, 1.0, 0.0 );
  110.       glVertex2f ( x + 90.0, y - 90.0 );
  111.  
  112.       glColor3f ( 1.0, 1.0, 1.0 );
  113.       glVertex2f ( x - 90.0, y - 90.0 );
  114.  
  115.       glEnd();
  116.  
  117.       glPushMatrix();
  118.       glLoadIdentity();
  119.       glOrtho ( -320, 320, 240, -240, 0, 1 );
  120.       glColor4f ( 255, 0, 0, 255 );
  121.  
  122.       SDL_SetRenderDrawColor ( renderer, 255, 0, 0, 255 );
  123.       SDL_RenderDrawLine ( renderer, -320 + 0, -240 + 0, -320 + 100, -240 + 100 );
  124.  
  125.       glPopMatrix();
  126.  
  127.       SDL_RenderPresent ( renderer );
  128.       SDL_Delay ( 10 );
  129.     }
  130.   }
  131.   SDL_DestroyRenderer ( renderer );
  132.   SDL_Quit();
  133.   return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement