6 #ifndef MATERIALX_GLSLPROGRAM_H
7 #define MATERIALX_GLSLPROGRAM_H
54 void addStage(
const string& stage,
const string& sourcCode);
58 const string& getStageSourceCode(
const string& stage)
const;
108 Input(
int inputLocation,
int inputType,
int inputSize,
string inputPath)
119 using InputMap = std::unordered_map<std::string, InputPtr>;
131 const InputMap& getAttributesList();
152 bool hasActiveAttributes()
const;
155 bool hasUniform(
const string&
name);
174 void unbindGeometry();
183 void bindViewInformation(
CameraPtr camera);
186 void bindTimeAndFrame(
float time = 1.0
f,
float frame = 1.0
f);
196 void printUniforms(std::ostream& outputStream);
199 void printAttributes(std::ostream& outputStream);
211 const InputMap& updateUniformsList();
214 const InputMap& updateAttributesList();
217 void clearInputLists();
224 ImagePtr bindTexture(
unsigned int uniformType,
int uniformLocation,
const FilePath& filePath,
228 void deleteProgram();
242 unsigned int _programId;
254 std::unordered_map<std::string, unsigned int> _attributeBufferIds;
257 std::map<MeshPartitionPtr, unsigned int> _indexBufferIds;
260 unsigned int _vertexArray;
263 std::unordered_map<std::string, unsigned int> _programTextures;
266 std::set<int> _enabledStreamLocations;
shared_ptr< class Mesh > MeshPtr
Shared pointer to a mesh.
std::shared_ptr< class Camera > CameraPtr
Shared pointer to a Camera.
void partition(I begin, I middle, I end, const Pred &pred, I *out_eqbeg, I *out_eqend)
#define MATERIALX_NAMESPACE_BEGIN
shared_ptr< class MeshPartition > MeshPartitionPtr
Shared pointer to a mesh partition.
GT_API const UT_StringHolder time
shared_ptr< const Value > ConstValuePtr
A shared pointer to a const Value.
static GlslProgramPtr create()
Create a GLSL program instance.
GLsizei const GLchar *const * path
GLuint const GLchar * name
std::shared_ptr< class LightHandler > LightHandlerPtr
Shared pointer to a LightHandler.
std::shared_ptr< class GlslProgram > GlslProgramPtr
std::shared_ptr< ImageHandler > ImageHandlerPtr
Shared pointer to an ImageHandler.
GLsizei const GLchar *const * string
#define MX_RENDERGLSL_API
std::unordered_map< std::string, InputPtr > InputMap
Program input shaded pointer map type.
std::unordered_map< string, string > StringMap
An unordered map with strings as both keys and values.
static unsigned int UNDEFINED_OPENGL_RESOURCE_ID
std::shared_ptr< Input > InputPtr
Program input structure shared pointer type.
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
#define MATERIALX_NAMESPACE_END
ShaderPtr getShader() const
Return the shader, if any, used to generate this program.
shared_ptr< Image > ImagePtr
A shared pointer to an image.
shared_ptr< Value > ValuePtr
A shared pointer to a Value.
static int UNDEFINED_OPENGL_PROGRAM_LOCATION
GLuint GLsizei GLsizei GLchar * uniformName