UltimateZoneBuilder/Source/Native/Shader.h

34 lines
815 B
C
Raw Normal View History

#pragma once
#include <string>
#include "RenderDevice.h"
enum class DeclarationUsage : int32_t { Position, Color, TextureCoordinate, Normal };
class Shader
{
public:
Shader() = default;
void ReleaseResources();
2019-08-16 02:10:03 +00:00
bool Compile(const std::string& vertexShader, const std::string& fragmentShader, bool alphatest);
const char* GetErrors() const { return mErrors.c_str(); }
GLuint GetProgram() const { return mProgram; }
2019-08-14 10:36:33 +00:00
GLuint UniformLocations[(int)UniformName::NumUniforms] = { 0 };
2019-08-16 02:10:03 +00:00
enum { MaxSamplers = 4 };
GLuint SamplerLocations[MaxSamplers] = { };
private:
GLuint CompileShader(const std::string& code, GLenum type);
GLuint mProgram = 0;
GLuint mVertexShader = 0;
GLuint mFragmentShader = 0;
std::string mErrors;
Shader(const Shader&) = delete;
Shader& operator=(const Shader&) = delete;
};