vertexshader.h
Go to the documentation of this file.
00001 #ifndef GLW_VERTEXSHADER_H
00002 #define GLW_VERTEXSHADER_H
00003 
00004 #include "./shader.h"
00005 
00006 namespace glw
00007 {
00008 
00009 class VertexShaderArguments : public ShaderArguments
00010 {
00011         public:
00012 
00013                 typedef ShaderArguments       BaseType;
00014                 typedef VertexShaderArguments ThisType;
00015 
00016                 VertexShaderArguments(void)
00017                         : BaseType()
00018                 {
00019                         ;
00020                 }
00021 
00022                 void clear(void)
00023                 {
00024                         BaseType::clear();
00025                 }
00026 };
00027 
00028 class VertexShader : public Shader
00029 {
00030         friend class Context;
00031 
00032         public:
00033 
00034                 typedef Shader       BaseType;
00035                 typedef VertexShader ThisType;
00036 
00037                 virtual Type type(void) const
00038                 {
00039                         return VertexShaderType;
00040                 }
00041 
00042         protected:
00043 
00044                 VertexShader(Context * ctx)
00045                         : BaseType(ctx)
00046                 {
00047                         ;
00048                 }
00049 
00050                 virtual GLenum shaderType(void) const
00051                 {
00052                         return GL_VERTEX_SHADER;
00053                 }
00054 
00055                 bool create(const VertexShaderArguments & args)
00056                 {
00057                         return BaseType::create(args);
00058                 }
00059 };
00060 
00061 namespace detail { template <> struct BaseOf <VertexShader> { typedef Shader Type; }; };
00062 typedef   detail::ObjectSharedPointerTraits  <VertexShader> ::Type VertexShaderPtr;
00063 
00064 class SafeVertexShader : public SafeShader
00065 {
00066         friend class Context;
00067         friend class BoundVertexShader;
00068 
00069         public:
00070 
00071                 typedef SafeShader       BaseType;
00072                 typedef SafeVertexShader ThisType;
00073 
00074         protected:
00075 
00076                 SafeVertexShader(const VertexShaderPtr & vertexShader)
00077                         : BaseType(vertexShader)
00078                 {
00079                         ;
00080                 }
00081 
00082                 const VertexShaderPtr & object(void) const
00083                 {
00084                         return static_cast<const VertexShaderPtr &>(BaseType::object());
00085                 }
00086 
00087                 VertexShaderPtr & object(void)
00088                 {
00089                         return static_cast<VertexShaderPtr &>(BaseType::object());
00090                 }
00091 };
00092 
00093 namespace detail { template <> struct BaseOf     <SafeVertexShader> { typedef SafeShader Type; }; };
00094 namespace detail { template <> struct ObjectBase <SafeVertexShader> { typedef VertexShader     Type; }; };
00095 namespace detail { template <> struct ObjectSafe <VertexShader    > { typedef SafeVertexShader Type; }; };
00096 typedef   detail::ObjectSharedPointerTraits      <SafeVertexShader> ::Type VertexShaderHandle;
00097 
00098 class VertexShaderBindingParams : public ShaderBindingParams
00099 {
00100         public:
00101 
00102                 typedef ShaderBindingParams       BaseType;
00103                 typedef VertexShaderBindingParams ThisType;
00104 
00105                 VertexShaderBindingParams(void)
00106                         : BaseType(GL_VERTEX_SHADER, 0)
00107                 {
00108                         ;
00109                 }
00110 };
00111 
00112 class BoundVertexShader : public BoundShader
00113 {
00114         friend class Context;
00115 
00116         public:
00117 
00118                 typedef BoundShader       BaseType;
00119                 typedef BoundVertexShader ThisType;
00120 
00121                 const VertexShaderHandle & handle(void) const
00122                 {
00123                         return static_cast<const VertexShaderHandle &>(BaseType::handle());
00124                 }
00125 
00126                 VertexShaderHandle & handle(void)
00127                 {
00128                         return static_cast<VertexShaderHandle &>(BaseType::handle());
00129                 }
00130 
00131         protected:
00132 
00133                 BoundVertexShader(const VertexShaderHandle & handle, const ShaderBindingParams & params)
00134                         : BaseType(handle, params)
00135                 {
00136                         ;
00137                 }
00138 
00139                 const VertexShaderPtr & object(void) const
00140                 {
00141                         return this->handle()->object();
00142                 }
00143 
00144                 VertexShaderPtr & object(void)
00145                 {
00146                         return this->handle()->object();
00147                 }
00148 };
00149 
00150 namespace detail { template <> struct ParamsOf    <BoundVertexShader> { typedef VertexShaderBindingParams Type; }; };
00151 namespace detail { template <> struct BaseOf      <BoundVertexShader> { typedef BoundShader Type; }; };
00152 namespace detail { template <> struct ObjectBase  <BoundVertexShader> { typedef VertexShader      Type; }; };
00153 namespace detail { template <> struct ObjectBound <VertexShader     > { typedef BoundVertexShader Type; }; };
00154 typedef   detail::ObjectSharedPointerTraits       <BoundVertexShader> ::Type  BoundVertexShaderHandle;
00155 
00156 };
00157 
00158 #endif // GLW_VERTEXSHADER_H


shape_reconstruction
Author(s): Roberto Martín-Martín
autogenerated on Sat Jun 8 2019 18:38:39