diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-01-29 18:04:34 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-01-29 18:04:34 +0000 |
| commit | b225af0ef95b886abf20a4c450b5a0b3ba351730 (patch) | |
| tree | 2d32c64d8b65d7179cbb2d95d2c5367287288ea4 /gfx/gl | |
| parent | Explicit cast to vec3 to disambiguate length/distance calc (diff) | |
| download | ilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.tar.bz2 ilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.tar.xz ilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.zip | |
Fix search/replace of GL_* macros in glsl
Diffstat (limited to 'gfx/gl')
| -rw-r--r-- | gfx/gl/shader.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gfx/gl/shader.cpp b/gfx/gl/shader.cpp index cc6473e..319726f 100644 --- a/gfx/gl/shader.cpp +++ b/gfx/gl/shader.cpp @@ -64,7 +64,7 @@ Shader::compile() const }; if (lookups) { std::basic_string<GLchar> textMod {text}; - for (const auto & match : ctre::search_all<R"(\bGL_[A-Z_]+\b)">(textMod)) { + while (const auto match = ctre::search<R"(\bGL_[A-Z_]+\b)">(textMod)) { if (const auto * const lookup = std::find_if(LOOKUPS.begin(), LOOKUPS.end(), [&match](const auto & lookup) { return std::get<std::string_view>(lookup) == match; @@ -73,6 +73,9 @@ Shader::compile() const const auto & [name, pname, getFunction] = *lookup; textMod.replace(match.begin(), match.end(), getFunction(pname)); } + else { + throw std::domain_error(std::format("Unknown shader constant: {}", match.view())); + } } source(textMod.c_str(), static_cast<GLint>(textMod.length())); } |
