librw/src/rwengine.h

54 lines
1.2 KiB
C
Raw Normal View History

2016-06-16 14:08:09 +02:00
namespace rw {
// This is for platform independent things
// TODO: move more stuff into this
2016-06-16 14:08:09 +02:00
struct Engine
{
2016-06-23 16:39:34 +02:00
void *currentCamera;
void *currentWorld;
static void init(void);
};
extern Engine *engine;
// This is for platform driver implementations
struct Driver
2016-06-16 14:08:09 +02:00
{
ObjPipeline *defaultPipeline;
int32 rasterNativeOffset;
void (*beginUpdate)(Camera*);
void (*endUpdate)(Camera*);
2016-06-16 14:08:09 +02:00
void (*rasterCreate)(Raster*);
uint8 *(*rasterLock)(Raster*, int32 level);
void (*rasterUnlock)(Raster*, int32 level);
int32 (*rasterNumLevels)(Raster*);
void (*rasterFromImage)(Raster*, Image*);
static PluginList s_plglist[NUM_PLATFORMS];
static void open(void);
static int32 registerPlugin(int32 platform, int32 size, uint32 id,
Constructor ctor, Destructor dtor){
return s_plglist[platform].registerPlugin(size, id,
ctor, dtor, nil);
}
2016-06-16 14:08:09 +02:00
};
extern Driver *driver[NUM_PLATFORMS];
#define DRIVER driver[rw::platform]
2016-06-16 14:08:09 +02:00
namespace null {
void beginUpdate(Camera*);
void endUpdate(Camera*);
2016-06-16 14:08:09 +02:00
void rasterCreate(Raster*);
uint8 *rasterLock(Raster*, int32 level);
void rasterUnlock(Raster*, int32 level);
int32 rasterNumLevels(Raster*);
void rasterFromImage(Raster*, Image*);
}
}