GLContext.cc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "GLContext.hh"
  2. #include "GLDefaultScaler.hh"
  3. #include "gl_transform.hh"
  4. #include <memory>
  5. namespace gl {
  6. // Global variables
  7. std::unique_ptr<Context> context;
  8. Context::Context(int width, int height)
  9. {
  10. VertexShader texVertexShader ("texture.vert");
  11. FragmentShader texFragmentShader("texture.frag");
  12. progTex.allocate();
  13. progTex.attach(texVertexShader);
  14. progTex.attach(texFragmentShader);
  15. progTex.bindAttribLocation(0, "a_position");
  16. progTex.bindAttribLocation(1, "a_texCoord");
  17. progTex.link();
  18. progTex.activate();
  19. glUniform1i(progTex.getUniformLocation("u_tex"), 0);
  20. unifTexColor = progTex.getUniformLocation("u_color");
  21. unifTexMvp = progTex.getUniformLocation("u_mvpMatrix");
  22. VertexShader fillVertexShader ("fill.vert");
  23. FragmentShader fillFragmentShader("fill.frag");
  24. progFill.allocate();
  25. progFill.attach(fillVertexShader);
  26. progFill.attach(fillFragmentShader);
  27. progFill.bindAttribLocation(0, "a_position");
  28. progFill.bindAttribLocation(1, "a_color");
  29. progFill.link();
  30. progFill.activate();
  31. unifFillMvp = progFill.getUniformLocation("u_mvpMatrix");
  32. pixelMvp = ortho(0, width, height, 0, -1, 1);
  33. }
  34. Context::~Context() = default;
  35. openmsx::GLScaler& Context::getFallbackScaler()
  36. {
  37. if (!fallbackScaler) {
  38. fallbackScaler = std::make_unique<openmsx::GLDefaultScaler>();
  39. }
  40. return *fallbackScaler;
  41. }
  42. } // namespace gl