tahoma2d/toonz/sources/include/ttessellator.h

84 lines
2.3 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#ifndef TTESSELLATOR_H
#define TTESSELLATOR_H
//#include "tpixel.h"
#include "traster.h"
#include "tgl.h"
#include "tthreadmessage.h"
class TColorFunction;
class TRegionOutline;
#undef DVAPI
#undef DVVAR
#ifdef TVRENDER_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
//=============================================================================
//==================== TTessellator ===========================================
//=============================================================================
2016-06-15 18:43:10 +12:00
class DVAPI TTessellator {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
virtual ~TTessellator() {}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual void tessellate(const TColorFunction *cf, const bool antiAliasing,
TRegionOutline &outline, TPixel32 color) = 0;
virtual void tessellate(const TColorFunction *cf, const bool antiAliasing,
TRegionOutline &outline, TRaster32P texture) = 0;
2016-03-19 06:57:51 +13:00
};
//=============================================================================
2016-06-15 18:43:10 +12:00
//==================== OpenGL Tessellator
//===========================================
2016-03-19 06:57:51 +13:00
//=============================================================================
class DVAPI TglTessellator final : public TTessellator {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
// TThread::Mutex m_mutex;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
class DVAPI GLTess {
public:
2016-03-19 06:57:51 +13:00
#ifdef GLU_VERSION_1_2
2016-06-15 18:43:10 +12:00
GLUtesselator *m_tess;
2016-03-19 06:57:51 +13:00
#else
#ifdef GLU_VERSION_1_1
2016-06-15 18:43:10 +12:00
GLUtriangulatorObj *m_tess;
2016-03-19 06:57:51 +13:00
#else
2016-06-15 18:43:10 +12:00
void *m_tess;
2016-03-19 06:57:51 +13:00
#endif
#endif
2016-06-15 18:43:10 +12:00
GLTess();
~GLTess();
};
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// static GLTess m_glTess;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void doTessellate(GLTess &glTess, const TColorFunction *cf,
const bool antiAliasing, TRegionOutline &outline);
void doTessellate(GLTess &glTess, const TColorFunction *cf,
const bool antiAliasing, TRegionOutline outline,
const TAffine &aff);
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
// void tessellate(const TVectorRenderData &rd, TRegionOutline &outline );
void tessellate(const TColorFunction *cf, const bool antiAliasing,
2016-06-19 20:06:29 +12:00
TRegionOutline &outline, TPixel32 color) override;
2016-06-15 18:43:10 +12:00
void tessellate(const TColorFunction *cf, const bool antiAliasing,
2016-06-19 20:06:29 +12:00
TRegionOutline &outline, TRaster32P texture) override;
2016-03-19 06:57:51 +13:00
};
//=============================================================================
#endif