ComputeShader.hpp 840 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef PARTICLE_COMPUTE_SHADER
  2. #define PARTICLE_COMPUTE_SHADER
  3. #include <vector>
  4. #include <string>
  5. #include <iostream>
  6. #include <fstream>
  7. #include <sstream>
  8. /* OpenGL */
  9. #include "glad/glad.h"
  10. #include <GLFW/glfw3.h>
  11. class ComputeShader
  12. {
  13. private:
  14. std::string m_shader_filename{};
  15. std::string m_shader_source{};
  16. GLuint m_program = 0;
  17. GLuint m_shader = 0;
  18. public:
  19. ComputeShader() = default;
  20. ComputeShader(std::string &shader_filename);
  21. ~ComputeShader();
  22. GLuint get_program() const;
  23. bool load(std::string shader_filename);
  24. bool compile();
  25. void activate();
  26. void deactivate();
  27. void execute(int n);
  28. void wait();
  29. bool release();
  30. bool set_uniform(char const * name, float value);
  31. bool set_uniform(char const * name, int value);
  32. };
  33. #endif // PARTICLE_COMPUTE_SHADER