* Shader type (generic), not managed by C++ RAII. */
| 13 | * Shader type (generic), not managed by C++ RAII. |
| 14 | */ |
| 15 | class ShaderUnmanaged : public ::Shader { |
| 16 | public: |
| 17 | ShaderUnmanaged() : ::Shader{rlGetShaderIdDefault(), rlGetShaderLocsDefault()} {} |
| 18 | |
| 19 | ShaderUnmanaged(const ::Shader& shader) : ::Shader(shader) { } |
| 20 | |
| 21 | ShaderUnmanaged(unsigned int id, int* locs = nullptr) : ::Shader{id, locs} {} |
| 22 | |
| 23 | ShaderUnmanaged(const std::string& vsFileName, const std::string& fsFileName) { |
| 24 | set(::LoadShader(vsFileName.c_str(), fsFileName.c_str())); |
| 25 | } |
| 26 | ShaderUnmanaged(const char* vsFileName, const char* fsFileName) { set(::LoadShader(vsFileName, fsFileName)); } |
| 27 | |
| 28 | /** |
| 29 | * Load shader from files and bind default locations. |
| 30 | * |
| 31 | * @see ::LoadShader |
| 32 | */ |
| 33 | static ::Shader Load(const std::string& vsFileName, const std::string& fsFileName) { |
| 34 | return ::LoadShader(vsFileName.c_str(), fsFileName.c_str()); |
| 35 | } |
| 36 | static ::Shader Load(const char* vsFileName, const char* fsFileName) { |
| 37 | return ::LoadShader(vsFileName, fsFileName); |
| 38 | } |
| 39 | |
| 40 | /** |
| 41 | * Load a shader from memory. |
| 42 | * |
| 43 | * @see ::LoadShaderFromMemory |
| 44 | */ |
| 45 | static ::Shader LoadFromMemory(const std::string& vsCode, const std::string& fsCode) { |
| 46 | return ::LoadShaderFromMemory(vsCode.c_str(), fsCode.c_str()); |
| 47 | } |
| 48 | static ::Shader LoadFromMemory(const char* vsCode, const char* fsCode) { |
| 49 | return ::LoadShaderFromMemory(vsCode, fsCode); |
| 50 | } |
| 51 | |
| 52 | GETTER(unsigned int, Id, id) |
| 53 | GETTER(int*, Locs, locs) |
| 54 | |
| 55 | ShaderUnmanaged& operator=(const ::Shader& shader) { |
| 56 | set(shader); |
| 57 | return *this; |
| 58 | } |
| 59 | |
| 60 | [[nodiscard]] std::string ToString() const { return TextFormat("Shader(id=%u)", id); } |
| 61 | |
| 62 | operator std::string() const { return ToString(); } |
| 63 | |
| 64 | /** |
| 65 | * Begin custom shader drawing. |
| 66 | */ |
| 67 | ShaderUnmanaged& BeginMode() { |
| 68 | ::BeginShaderMode(*this); |
| 69 | return *this; |
| 70 | } |
| 71 | |
| 72 | /** |
nothing calls this directly
no outgoing calls
no test coverage detected