31 #include "Utilities/Math/Math.h" 32 #include "core/Macro/Macro.h" 33 #include "Utilities/STL/MxString.h" 34 #include "Utilities/STL/MxHashMap.h" 40 #if defined(MXENGINE_DEBUG) 41 MxString vertexShaderPath, geometryShaderPath, fragmentShaderPath;
43 using UniformType = int;
44 using UniformCache = MxHashMap<MxString, UniformType>;
45 using ShaderId =
unsigned int;
46 using BindableId =
unsigned int;
49 mutable UniformCache uniformCache;
51 ShaderId CompileShader(
unsigned int type,
const MxString& source,
const MxString& name)
const;
52 BindableId CreateProgram(ShaderId vertexShader, ShaderId fragmentShader)
const;
53 BindableId CreateProgram(ShaderId vertexShader, ShaderId geometryShader, ShaderId fragmentShader)
const;
54 UniformType GetUniformLocation(
const MxString& uniformName)
const;
57 Shader(
const MxString& vertexShaderPath,
const MxString& fragmentShaderPath);
58 Shader(
const MxString& vertexShaderPath,
const MxString& geometryShaderPath,
const MxString& fragmentShaderPath);
67 void InvalidateUniformCache();
68 BindableId GetNativeHandle()
const;
69 void Load(
const MxString& vertex,
const MxString& fragment);
70 void Load(
const MxString& vertex,
const MxString& geometry,
const MxString& fragment);
71 void LoadFromString(
const MxString& vertex,
const MxString& fragment);
72 void LoadFromString(
const MxString& vertex,
const MxString& geometry,
const MxString& fragment);
73 void SetUniformFloat(
const MxString& name,
float f)
const;
74 void SetUniformVec2(
const MxString& name,
const Vector2& vec)
const;
75 void SetUniformVec3(
const MxString& name,
const Vector3& vec)
const;
76 void SetUniformVec4(
const MxString& name,
const Vector4& vec)
const;
77 void SetUniformMat4(
const MxString& name,
const Matrix4x4& matrix)
const;
78 void SetUniformMat3(
const MxString& name,
const Matrix3x3& matrix)
const;
79 void SetUniformInt(
const MxString& name,
int i)
const;
Definition: Application.cpp:49