Program.cpp 1018 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/Assertions.h>
  7. #include <AK/Format.h>
  8. #include <LibAccelGfx/GL.h>
  9. #include <LibAccelGfx/Program.h>
  10. namespace AccelGfx {
  11. Program Program::create(char const* vertex_shader_source, char const* fragment_shader_source)
  12. {
  13. auto vertex_shader = GL::create_shader(GL::ShaderType::Vertex, vertex_shader_source);
  14. auto fragment_shader = GL::create_shader(GL::ShaderType::Fragment, fragment_shader_source);
  15. auto program = GL::create_program(vertex_shader, fragment_shader);
  16. return Program { program };
  17. }
  18. void Program::use()
  19. {
  20. GL::use_program(m_program);
  21. }
  22. GL::VertexAttribute Program::get_attribute_location(char const* name)
  23. {
  24. return GL::get_attribute_location(m_program, name);
  25. }
  26. GL::Uniform Program::get_uniform_location(char const* name)
  27. {
  28. return GL::get_uniform_location(m_program, name);
  29. }
  30. Program::~Program()
  31. {
  32. GL::delete_program(m_program);
  33. }
  34. }