#pragma once #include "GLSLShaderDefaultGL32.h" #include "VectorFwd.h" #include "Mat4Fwd.h" namespace Aftr { class Model; class GLSLShaderDefaultGL32PerVertexColor : public GLSLShaderDefaultGL32 { public: static GLSLShaderDefaultGL32PerVertexColor* New(); static GLSLShaderDefaultGL32PerVertexColor* New( GLSLShaderDataShared* shdrData ); virtual ~GLSLShaderDefaultGL32PerVertexColor(); GLSLShaderDefaultGL32PerVertexColor& operator=( const GLSLShaderDefaultGL32PerVertexColor& shader ); /** Returns a copy of this instance. This is identical to invoking the copy constructor with the addition that this preserves the polymorphic type. That is, if this was a subclass of GLSLShader with additional members and methods, this will internally create the shader instance as that subclass, thereby preserving polymorphic behavior, members, and methods. This is in contrast with a copy constructor in the case where one performs: GLSLShader* myCopy = new GLSLShader( shaderToBeCopied ); This will always create a GLSLShader* instance, not a subclass corresponding to the exact type of shaderToBeCopied. */ virtual GLSLShader* getCopyOfThisInstance(); protected: GLSLShaderDefaultGL32PerVertexColor( GLSLShaderDataShared* dataShared ); GLSLShaderDefaultGL32PerVertexColor(const GLSLShaderDefaultGL32PerVertexColor&); }; }