aboutsummaryrefslogtreecommitdiff
path: root/include/RenderBackend/OpenGL/CommonShader.hpp
blob: 80e63a9e000152561da5d23164c4a3d36631f001 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once

#include "../../types.hpp"
#include <string>

namespace amalgine
{
    struct ShaderAttribute
    {
        std::string name;
        const char *typeName;
    };
    
    static bool isAlpha(char c)
    {
        return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
    }
    
    static bool isDigit(char c)
    {
        return c >= '0' && c <= '9';
    }
    
    static bool isShaderVariableNameValid(const char *variableName)
    {
        const char *p = &variableName[0];
        if(isAlpha(*p) || *p == '_')
        {
            ++p;
            while(true)
            {
                char c = *p;
                if(c == '\0')
                    return true;
                else if(isAlpha(c) || isDigit(c) || c == '_')
                    ++p;
            }
        }
        
        return false;
    }
    
    std::string getShaderCompileLog(u32 shaderId);
}