SDL2 + OpenGL


SUBMITTED BY: Arvamer

DATE: Dec. 30, 2015, 7:25 p.m.

FORMAT: C++

SIZE: 1.6 kB

HITS: 1034

  1. #include <stdio.h>
  2. #include <GL/gl3w.h>
  3. #include <SDL2/SDL.h>
  4. int main()
  5. {
  6. if (SDL_Init(SDL_INIT_VIDEO) < 0) {
  7. fprintf(stderr, "Unable to initialize SDL");
  8. return EXIT_FAILURE;
  9. }
  10. SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
  11. SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
  12. SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
  13. SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1);
  14. auto window = SDL_CreateWindow("GL",
  15. SDL_WINDOWPOS_CENTERED,
  16. SDL_WINDOWPOS_CENTERED,
  17. 640, 480,
  18. SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
  19. if (!window) {
  20. fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError());
  21. SDL_Quit();
  22. return EXIT_FAILURE;
  23. }
  24. auto gl_context = SDL_GL_CreateContext(window);
  25. if (gl3wInit()) {
  26. fprintf(stderr, "Failed to initialize OpenGL\n");
  27. return EXIT_FAILURE;
  28. }
  29. printf("OpenGL %s, GLSL %s\n", glGetString(GL_VERSION),
  30. glGetString(GL_SHADING_LANGUAGE_VERSION));
  31. SDL_GL_SetSwapInterval(1); //Vsync
  32. glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
  33. auto quit = false;
  34. SDL_Event event;
  35. while (!quit) {
  36. while (SDL_PollEvent(&event)) {
  37. if (event.type == SDL_QUIT) {
  38. quit = true;
  39. }
  40. }
  41. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  42. SDL_GL_SwapWindow(window);
  43. }
  44. return EXIT_SUCCESS;
  45. }

comments powered by Disqus