1#ifndef RAYLIB_CPP_INCLUDE_UNMANAGEDSHADER_HPP_
2#define RAYLIB_CPP_INCLUDE_UNMANAGEDSHADER_HPP_
4#include "./raylib-cpp-utils.hpp"
17 ShaderUnmanaged() : ::Shader{rlGetShaderIdDefault(), rlGetShaderLocsDefault()} {}
21 ShaderUnmanaged(
unsigned int id,
int* locs =
nullptr) : ::Shader{id, locs} {}
23 ShaderUnmanaged(
const std::string& vsFileName,
const std::string& fsFileName) {
24 set(::LoadShader(vsFileName.c_str(), fsFileName.c_str()));
26 ShaderUnmanaged(
const char* vsFileName,
const char* fsFileName) { set(::LoadShader(vsFileName, fsFileName)); }
33 static ::Shader
Load(
const std::string& vsFileName,
const std::string& fsFileName) {
34 return ::LoadShader(vsFileName.c_str(), fsFileName.c_str());
36 static ::Shader
Load(
const char* vsFileName,
const char* fsFileName) {
37 return ::LoadShader(vsFileName, fsFileName);
45 static ::Shader
LoadFromMemory(
const std::string& vsCode,
const std::string& fsCode) {
46 return ::LoadShaderFromMemory(vsCode.c_str(), fsCode.c_str());
48 static ::Shader
LoadFromMemory(
const char* vsCode,
const char* fsCode) {
49 return ::LoadShaderFromMemory(vsCode, fsCode);
52 GETTER(
unsigned int, Id,
id)
53 GETTER(
int*, Locs, locs)
64 ::BeginShaderMode(*
this);
81 [[nodiscard]]
int GetLocation(
const std::string& uniformName)
const { return ::GetShaderLocation(*
this, uniformName.c_str()); }
89 return ::GetShaderLocationAttrib(*
this, attribName.c_str());
98 ::SetShaderValue(*
this, uniformLoc, value, uniformType);
108 ::SetShaderValueV(*
this, uniformLoc, value, uniformType, count);
118 ::SetShaderValueMatrix(*
this, uniformLoc, mat);
128 ::SetShaderValueTexture(*
this, uniformLoc, texture);
135 [[nodiscard]]
bool IsValid()
const { return ::IsShaderValid(*
this); }
137 void set(const ::Shader& shader) {
Shader type (generic), not managed by C++ RAII.
bool IsValid() const
Retrieves whether or not the shader is ready.
::Shader LoadFromMemory(const std::string &vsCode, const std::string &fsCode)
Load a shader from memory.
::Shader Load(const std::string &vsFileName, const std::string &fsFileName)
Load shader from files and bind default locations.
ShaderUnmanaged & SetValue(int uniformLoc, const void *value, int uniformType)
Set shader uniform value.
ShaderUnmanaged & SetValue(int uniformLoc, const ::Texture2D &texture)
Set shader uniform value for texture.
int GetLocationAttrib(const std::string &attribName) const
Get shader attribute location.
ShaderUnmanaged & SetValue(int uniformLoc, const ::Matrix &mat)
Set shader uniform value (matrix 4x4)
ShaderUnmanaged & EndMode()
End custom shader drawing (use default shader).
ShaderUnmanaged & BeginMode()
Begin custom shader drawing.
ShaderUnmanaged & SetValue(int uniformLoc, const void *value, int uniformType, int count)
Set shader uniform value vector.
int GetLocation(const std::string &uniformName) const
Get shader uniform location.
All raylib-cpp classes and functions appear in the raylib namespace.