add vcglib
This commit is contained in:
1 parent
6f6c0c8eb7
commit
af8100f851
1537 files changed
+634197
No files matched your search
@@ -0,0 +1,200 @@
|
||||
#ifndef GLW_RENDERABLE_H
|
||||
#define GLW_RENDERABLE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "./object.h"
|
||||
|
||||
namespace glw
|
||||
{
|
||||
|
||||
class RenderableArguments : public ObjectArguments
|
||||
{
|
||||
public:
|
||||
|
||||
typedef ObjectArguments BaseType;
|
||||
typedef RenderableArguments ThisType;
|
||||
|
||||
GLenum format;
|
||||
|
||||
RenderableArguments(void)
|
||||
: BaseType ()
|
||||
, format (GL_RGBA8)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
RenderableArguments(GLenum aFormat)
|
||||
: BaseType ()
|
||||
, format (aFormat)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
void clear(void)
|
||||
{
|
||||
BaseType::clear();
|
||||
this->format = GL_RGBA8;
|
||||
}
|
||||
};
|
||||
|
||||
class Renderable : public Object
|
||||
{
|
||||
friend class Context;
|
||||
|
||||
public:
|
||||
|
||||
typedef Object BaseType;
|
||||
typedef Renderable ThisType;
|
||||
|
||||
GLenum format(void) const
|
||||
{
|
||||
return this->m_format;
|
||||
}
|
||||
|
||||
virtual int imageDimensions (void) const = 0;
|
||||
virtual bool isArray (void) const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
GLenum m_format;
|
||||
|
||||
Renderable(Context * ctx)
|
||||
: BaseType (ctx)
|
||||
, m_format (GL_NONE)
|
||||
{
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
namespace detail { template <> struct BaseOf <Renderable> { typedef Object Type; }; };
|
||||
typedef detail::ObjectSharedPointerTraits <Renderable> ::Type RenderablePtr;
|
||||
|
||||
class SafeRenderable : public SafeObject
|
||||
{
|
||||
friend class Context;
|
||||
friend class BoundRenderable;
|
||||
|
||||
public:
|
||||
|
||||
typedef SafeObject BaseType;
|
||||
typedef SafeRenderable ThisType;
|
||||
|
||||
SafeRenderable(void)
|
||||
: BaseType()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
GLenum format(void) const
|
||||
{
|
||||
return this->object()->format();
|
||||
}
|
||||
|
||||
int imageDimensions(void) const
|
||||
{
|
||||
return this->object()->imageDimensions();
|
||||
}
|
||||
|
||||
bool isArray(void) const
|
||||
{
|
||||
return this->object()->isArray();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
SafeRenderable(const RenderablePtr & renderable)
|
||||
: BaseType(renderable)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
const RenderablePtr & object(void) const
|
||||
{
|
||||
return static_cast<const RenderablePtr &>(BaseType::object());
|
||||
}
|
||||
|
||||
RenderablePtr & object(void)
|
||||
{
|
||||
return static_cast<RenderablePtr &>(BaseType::object());
|
||||
}
|
||||
};
|
||||
|
||||
namespace detail { template <> struct BaseOf <SafeRenderable> { typedef SafeObject Type; }; };
|
||||
namespace detail { template <> struct ObjectBase <SafeRenderable> { typedef Renderable Type; }; };
|
||||
namespace detail { template <> struct ObjectSafe <Renderable > { typedef SafeRenderable Type; }; };
|
||||
typedef detail::ObjectSharedPointerTraits <SafeRenderable> ::Type RenderableHandle;
|
||||
|
||||
class RenderableBindingParams : public ObjectBindingParams
|
||||
{
|
||||
public:
|
||||
|
||||
typedef ObjectBindingParams BaseType;
|
||||
typedef RenderableBindingParams ThisType;
|
||||
|
||||
RenderableBindingParams(void)
|
||||
: BaseType()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
RenderableBindingParams(GLenum aTarget, GLenum aUnit)
|
||||
: BaseType(aTarget, aUnit)
|
||||
{
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
class BoundRenderable : public BoundObject
|
||||
{
|
||||
friend class Context;
|
||||
|
||||
public:
|
||||
|
||||
typedef BoundObject BaseType;
|
||||
typedef BoundRenderable ThisType;
|
||||
|
||||
BoundRenderable(void)
|
||||
: BaseType()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
const RenderableHandle & handle(void) const
|
||||
{
|
||||
return static_cast<const RenderableHandle &>(BaseType::handle());
|
||||
}
|
||||
|
||||
RenderableHandle & handle(void)
|
||||
{
|
||||
return static_cast<RenderableHandle &>(BaseType::handle());
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
BoundRenderable(const RenderableHandle & handle, const RenderableBindingParams & params)
|
||||
: BaseType(handle, params)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
const RenderablePtr & object(void) const
|
||||
{
|
||||
return this->handle()->object();
|
||||
}
|
||||
|
||||
RenderablePtr & object(void)
|
||||
{
|
||||
return this->handle()->object();
|
||||
}
|
||||
};
|
||||
|
||||
namespace detail { template <> struct ParamsOf <BoundRenderable> { typedef RenderableBindingParams Type; }; };
|
||||
namespace detail { template <> struct BaseOf <BoundRenderable> { typedef BoundObject Type; }; };
|
||||
namespace detail { template <> struct ObjectBase <BoundRenderable> { typedef Renderable Type; }; };
|
||||
namespace detail { template <> struct ObjectBound <Renderable > { typedef BoundRenderable Type; }; };
|
||||
typedef detail::ObjectSharedPointerTraits <BoundRenderable> ::Type BoundRenderableHandle;
|
||||
|
||||
};
|
||||
|
||||
#endif // GLW_RENDERABLE_H
|
||||
Reference in new issue
Block a user