Shader class
#include <nCine/Graphics/Shader.h>
GPU shader program usable by materials and drawable nodes.
Wraps an OpenGL shader program built from a vertex and a fragment shader. The sources can come from memory, a file, one of the built-in default shaders or the binary cache, and a matching variant can be registered for rendering batched draw commands.
Base classes
- class Object
- Base class of all nCine objects.
Public types
- enum class LoadMode { String, File }
- Load mode.
- enum class Introspection { Enabled, NoUniformsInBlocks, Disabled }
- Introspection mode.
- enum class DefaultVertex { SPRITE, SPRITE_NOTEXTURE, MESHSPRITE, MESHSPRITE_NOTEXTURE, BATCHED_SPRITES, BATCHED_SPRITES_NOTEXTURE, BATCHED_MESHSPRITES, BATCHED_MESHSPRITES_NOTEXTURE }
- Built-in vertex shaders.
- enum class DefaultFragment { SPRITE, SPRITE_NOTEXTURE }
- Built-in fragment shaders.
Public static functions
- static auto sType() -> ObjectType
Constructors, destructors, conversion operators
- Shader()
-
Shader(const char* shaderName,
LoadMode loadMode,
Introspection introspection,
const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(const char* shaderName,
LoadMode loadMode,
const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(LoadMode loadMode,
const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(const char* shaderName,
LoadMode loadMode,
Introspection introspection,
DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(const char* shaderName,
LoadMode loadMode,
DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(LoadMode loadMode,
DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(const char* shaderName,
LoadMode loadMode,
Introspection introspection,
const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(const char* shaderName,
LoadMode loadMode,
const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -
Shader(LoadMode loadMode,
const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) - ~Shader() override
- Shader(const Shader&) deleted
Public functions
- auto operator=(const Shader&) -> Shader& deleted
-
auto LoadFromMemory(const char* shaderName,
Introspection introspection,
const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromMemory(const char* shaderName,
const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromMemory(const char* vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromMemory(const char* shaderName,
Introspection introspection,
DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromMemory(const char* shaderName,
DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromMemory(DefaultVertex vertex,
const char* fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromMemory(const char* shaderName,
Introspection introspection,
const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromMemory(const char* shaderName,
const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromMemory(const char* vertex,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(const char* shaderName,
Introspection introspection,
StringView vertexPath,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromFile(const char* shaderName,
StringView vertexPath,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(StringView vertexPath,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(const char* shaderName,
Introspection introspection,
DefaultVertex vertex,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromFile(const char* shaderName,
DefaultVertex vertex,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(DefaultVertex vertex,
StringView fragmentPath,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(const char* shaderName,
Introspection introspection,
StringView vertexPath,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize, ArrayView<const StringView> defines = {}) -> bool -
auto LoadFromFile(const char* shaderName,
StringView vertexPath,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromFile(StringView vertexPath,
DefaultFragment fragment,
std::
int32_t batchSize = GLShaderProgram:: DefaultBatchSize) -> bool -
auto LoadFromCache(const char* shaderName,
std::
uint64_t shaderVersion, Introspection introspection) -> bool -
auto SaveToCache(const char* shaderName,
std::
uint64_t shaderVersion) const -> bool -
auto SetAttribute(const char* name,
std::
int32_t stride, void* pointer) -> bool - Sets the VBO stride and pointer for the specified vertex attribute.
- auto IsLinked() const -> bool
- Returns
trueif the shader is linked and can therefore be used. - auto RetrieveInfoLogLength() const -> unsigned int
- Returns the length of the information log, including the null terminator.
-
void RetrieveInfoLog(std::
string& infoLog) const - Retrieves the information log and copies it into the provided string object.
- auto GetLogOnErrors() const -> bool
- Returns the automatic log on errors flag.
- void SetLogOnErrors(bool shouldLogOnErrors)
- Sets the automatic log on errors flag.
- void SetGLShaderProgramLabel(const char* label)
- Sets the OpenGL object label for the shader program.
- void RegisterBatchedShader(Shader& batchedShader)
- Registers a shader to be used when rendering batches of render commands.
- auto GetHandle() -> GLShaderProgram*
Function documentation
void nCine:: Shader:: SetLogOnErrors(bool shouldLogOnErrors)
Sets the automatic log on errors flag.
When the flag is true the shader automatically logs compilation and linking errors.