12 #ifndef MATERIAL_H_6014714286
13 #define MATERIAL_H_6014714286
15 #include <Carna/Carna.h>
18 #include <Carna/base/ShaderUniform.h>
180 const std::unique_ptr< Details > pimpl;
191 Material(
const std::string& shaderName );
216 template<
typename ParameterType >
217 void setParameter(
const std::string& name,
const ParameterType& value );
222 void clearParameters();
227 void removeParameter(
const std::string& name );
232 bool hasParameter(
const std::string& name )
const;
243 static Material& create(
const std::string& shaderName );
250 virtual bool controlsSameVideoResource(
const GeometryFeature& other )
const override;
305 template<
typename ParameterType >
317 #endif // MATERIAL_H_6014714286
void addParameter(ShaderUniformBase *uniform)
Records uniform as shader parameter. This will be uploaded to the shader when the material is activat...
Manages the OpenGL render state.
Defines Carna::base::ShaderManager.
Defines Carna::base::GeometryFeature.
Represents an acquisition of video resources from a particular Material. This realizes the RAII idiom...
Represents "components" that are aggregated by Geometry objects. Closer description is given here...
Maintains an OpenGL shader program. Realizes the RAII-idiom.
Represents an acquisition of the video resources from a particular GeometryFeature. This acquisition realizes the RAII idiom.
Specifies the shader and it's configuration that are to be used for rendering a Geometry node with a ...
void setParameter(const std::string &name, const ParameterType &value)
const std::string shaderName
Identifies this material's shader.
#define NON_COPYABLE
Features class it is placed in as non-copyable.
Material & material
References the material.