added singleton shader manager, custom widget attribute forward, parse border thickness and color for Border widget, parse and cache uniform locations, remove unused attrubutes code

This commit is contained in:
2017-01-30 19:52:32 +00:00
parent 16c1b6481e
commit a80556f418
8 changed files with 179 additions and 172 deletions

View File

@@ -1,25 +1,41 @@
#pragma once
#include "util.hpp"
enum class kShaderUniform : uint16_t
{
MVP = const_hash("mvp"),
Tex = const_hash("tex"),
Col = const_hash("col"),
};
class Shader
{
std::map<kShaderUniform, GLuint> m_umap;
GLuint prog;
public:
bool create(std::string vertex, std::string fragment);
bool create(const char* vertex, const char* fragment);
void use();
void u_vec4(const char* name, const glm::vec4& v);
void u_mat4(const char* name, const glm::mat4& m);
void u_int(const char* name, int i);
void u_vec4(kShaderUniform id, const glm::vec4& v);
void u_mat4(kShaderUniform id, const glm::mat4& m);
void u_int(kShaderUniform id, int i);
};
enum class kShader : uint16_t
{
Color = const_hash("color"),
Color = const_hash("color"),
Texture = const_hash("texture"),
UVs = const_hash("uvs"),
};
class ShaderManager
{
static std::map<kShader, Shader> m_shaders;
static Shader* m_current;
public:
static bool create(kShader id, const char* vertex, const char* fragment);
static void use(kShader id);
static void use(const char* name);
static void u_vec4(kShaderUniform id, const glm::vec4& v);
static void u_mat4(kShaderUniform id, const glm::mat4& m);
static void u_int(kShaderUniform id, int i);
};