Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SDL2 Render API & OpenGL Combined
- 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
- Source: https://forums.libsdl.org/viewtopic.php?t=9440&sid=087dc25c12164d8521dd92ad6cf5d430
- */
- #include <iostream>
- #include <OpenGL/OpenGL.h>
- #include <OpenGL/glu.h>
- #include <SDL.h>
- int main ( int argc, char** argv )
- {
- SDL_Init ( SDL_INIT_VIDEO );
- // SDL_SetHint( SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES, "0" );
- SDL_Window* win = SDL_CreateWindow ( "test", 20, 20, 640, 480,
- SDL_WINDOW_OPENGL );
- SDL_GLContext glcontext = SDL_GL_CreateContext ( win );
- int oglIdx = -1;
- int nRD = SDL_GetNumRenderDrivers();
- for ( int i = 0; i < nRD; i++ )
- {
- SDL_RendererInfo info;
- if ( !SDL_GetRenderDriverInfo ( i, &info ) )
- {
- if ( !strcmp ( info.name, "opengl" ) )
- {
- oglIdx = i;
- }
- }
- }
- SDL_Renderer* renderer = SDL_CreateRenderer ( win, oglIdx,
- SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
- SDL_GL_SetAttribute ( SDL_GL_DOUBLEBUFFER, 1 );
- glMatrixMode ( GL_PROJECTION | GL_MODELVIEW );
- glLoadIdentity();
- glOrtho ( -320, 320, 240, -240, 0, 1 );
- SDL_Event event;
- bool quit = false;
- bool fs = false;
- int x;
- int y;
- while ( !quit )
- {
- while ( SDL_PollEvent ( &event ) )
- {
- switch( event.type )
- {
- case SDL_QUIT: quit = true; break;
- case SDL_MOUSEBUTTONDOWN:
- {
- break;
- }
- case SDL_MOUSEMOTION:
- {
- x = event.motion.xrel;
- y = event.motion.yrel;
- std::cout << x << "\n";
- std::cout << y << "\n";
- break;
- }
- case SDL_KEYDOWN:
- {
- switch( event.key.keysym.sym )
- {
- case SDLK_ESCAPE:
- case SDLK_q: quit = true; break;
- case SDLK_f:
- {
- if( fs )
- {
- SDL_SetWindowFullscreen(win, 0);
- fs = false;
- }
- else
- {
- SDL_SetWindowFullscreen(win, SDL_WINDOW_FULLSCREEN_DESKTOP);
- fs = true;
- }
- break;
- }
- }
- break;
- }
- }
- glClearColor ( 0, 0, 0, 0 );
- glClear ( GL_COLOR_BUFFER_BIT );
- glRotatef ( 0.6, 0.0, 0.0, 1.0 );
- float x = 30.0, y = 30.0;
- glBegin ( GL_TRIANGLES );
- glColor3f ( 1.0, 1.0, 0.0 );
- glVertex2f ( x, y + 90.0 );
- glColor3f ( 1.0, 1.0, 0.0 );
- glVertex2f ( x + 90.0, y - 90.0 );
- glColor3f ( 1.0, 1.0, 1.0 );
- glVertex2f ( x - 90.0, y - 90.0 );
- glEnd();
- glPushMatrix();
- glLoadIdentity();
- glOrtho ( -320, 320, 240, -240, 0, 1 );
- glColor4f ( 255, 0, 0, 255 );
- SDL_SetRenderDrawColor ( renderer, 255, 0, 0, 255 );
- SDL_RenderDrawLine ( renderer, -320 + 0, -240 + 0, -320 + 100, -240 + 100 );
- glPopMatrix();
- SDL_RenderPresent ( renderer );
- SDL_Delay ( 10 );
- }
- }
- SDL_DestroyRenderer ( renderer );
- SDL_Quit();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement