fekalnigtacko/src/gfx/shader.hpp
2026-05-24 23:14:29 +02:00

64 lines
946 B
C++
Raw Blame History

#pragma once
#include "client/gl.hpp"
#include "client/utils.hpp"
namespace gfx
{
/**
* \brief Uniformy shaderu
*/
enum ShaderUniform
{
SU_MODEL,
SU_VIEW_PROJ,
SU_TEX,
SU_COLOR,
SU_FLAGS,
SU_CAMERA,
SU_DEFORM_TEX,
SU_DEFORM_INFO,
SU_AMBIENT_LIGHT,
SU_SUN_COLOR,
SU_SUN_DIRECTION,
SU_FOG,
SU_NUMLIGHTS,
SU_LIGHT_POSITIONS,
SU_LIGHT_COLORS_RS,
SU_COUNT
};
/**
* \brief Wrapper pro OpenGL shader program
*/
class Shader : public NonCopyableNonMovable
{
GLuint m_id;
GLint m_uni[SU_COUNT];
public:
Shader(const char* vert_src, const char* frag_src);
~Shader();
/**
* \brief Vr<56>t<EFBFBD> lokaci uniformy
*
* \param u Uniforma
* \return Lokace
*/
GLint U(ShaderUniform u) const { return m_uni[u]; }
/**
* \brief Vr<56>t<EFBFBD> OpenGL n<>zev shaderu
*
* \return N<>zev shaderu
*/
GLuint GetId() const { return m_id; }
private:
void SetupBindings();
};
}