2015-05-04 23:37:28 +00:00
|
|
|
#ifndef IGRAPHICSCONTEXT_HPP
|
|
|
|
#define IGRAPHICSCONTEXT_HPP
|
|
|
|
|
|
|
|
namespace boo
|
|
|
|
{
|
|
|
|
|
|
|
|
class IGraphicsContext
|
|
|
|
{
|
2015-05-05 07:16:06 +00:00
|
|
|
friend class CWindowCocoa;
|
|
|
|
virtual void _setCallback(class IWindowCallback* cb) {(void)cb;};
|
|
|
|
|
2015-05-04 23:37:28 +00:00
|
|
|
public:
|
|
|
|
|
|
|
|
enum EGraphicsAPI
|
|
|
|
{
|
|
|
|
API_NONE = 0,
|
|
|
|
API_OPENGL_3_3 = 1,
|
|
|
|
API_OPENGL_4_2 = 2,
|
|
|
|
API_OPENGLES_3 = 3,
|
|
|
|
API_VULKAN = 4,
|
|
|
|
API_D3D11 = 5,
|
2015-05-05 07:16:06 +00:00
|
|
|
API_METAL = 6,
|
|
|
|
API_GX = 7,
|
|
|
|
API_GX2 = 8
|
2015-05-04 23:37:28 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum EPixelFormat
|
|
|
|
{
|
|
|
|
PF_NONE = 0,
|
|
|
|
PF_RGBA8 = 1, /* Default */
|
|
|
|
PF_RGBA8_Z24 = 2,
|
|
|
|
PF_RGBAF32 = 3,
|
|
|
|
PF_RGBAF32_Z24 = 4
|
|
|
|
};
|
|
|
|
|
|
|
|
virtual ~IGraphicsContext() {}
|
|
|
|
|
|
|
|
virtual EGraphicsAPI getAPI() const=0;
|
|
|
|
virtual EPixelFormat getPixelFormat() const=0;
|
|
|
|
virtual void setPixelFormat(EPixelFormat pf)=0;
|
|
|
|
virtual void initializeContext()=0;
|
|
|
|
virtual IGraphicsContext* makeShareContext() const=0;
|
|
|
|
virtual void makeCurrent()=0;
|
|
|
|
virtual void clearCurrent()=0;
|
|
|
|
|
|
|
|
/* Note: *all* contexts are double-buffered with
|
|
|
|
* v-sync interval; please call this */
|
|
|
|
virtual void swapBuffer()=0;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // IGRAPHICSCONTEXT_HPP
|