vcglib/wrap/glw/geometryshader.h

88 lines
1.5 KiB
C++

#ifndef GLW_GEOMETRYSHADER_H
#define GLW_GEOMETRYSHADER_H
#include "./shader.h"
namespace glw
{
class GeometryShaderArguments : public ShaderArguments
{
public:
typedef ShaderArguments BaseType;
typedef GeometryShaderArguments ThisType;
GeometryShaderArguments(void)
{
this->clear();
}
void clear(void)
{
BaseType::clear();
}
};
class SafeGeometryShader : public virtual SafeShader
{
public:
typedef SafeShader BaseType;
typedef SafeGeometryShader ThisType;
protected:
SafeGeometryShader(Context * ctx)
: SafeObject (ctx)
, BaseType (ctx)
{
;
}
};
class GeometryShader : public Shader, public SafeGeometryShader
{
friend class Context;
friend class detail::SharedObjectBinding<GeometryShader>;
public:
typedef Shader BaseType;
typedef SafeGeometryShader SafeType;
typedef GeometryShader ThisType;
virtual Type type(void) const
{
return GeometryShaderType;
}
protected:
GeometryShader(Context * ctx)
: SafeObject (ctx)
, SafeShader (ctx)
, BaseType (ctx)
, SafeType (ctx)
{
;
}
virtual GLenum shaderType(void) const
{
return GL_GEOMETRY_SHADER;
}
bool create(const GeometryShaderArguments & args)
{
return BaseType::create(args);
}
};
typedef detail::SafeHandle <GeometryShader> GeometryShaderHandle;
typedef detail::UnsafeHandle <GeometryShader> BoundGeometryShader;
} // end namespace glw
#endif // GLW_GEOMETRYSHADER_H