// (c) Tuomas J. Lukka #include #include #include #include namespace Vob { PREDBGVAR(dbg_renderer); PREDBGVAR(dbg_fps); PREDBGVAR(dbg_fps_cout); namespace CurrentFPS { // bool showFPS; extern double current_fps; extern double current_fps5; // average of last 5 frames extern int count; enum { NCounts = 5 }; extern double last_time[NCounts]; } class Renderer { Coorder coordset; public: Renderer(TransformFactory fac) : coordset(fac) { } static bool sceneMoving; static const int RENDERABLE0 = 0x0800000; static const int RENDERABLE1 = 0x1000000; static const int RENDERABLE2 = 0x2000000; static const int RENDERABLE3 = 0x3000000; static const int RMASK = 0xf800000; static void setStandardCoordinates(Vec wh); static void fpsTick(); // TODO: RENDERABLE3 setPoints() void setPoints( int ninds, int *inds1, float *points1, int *interpinds, int *inds2, float *points2, float fract, bool show1) { coordset.clean(); sceneMoving = (interpinds != 0); coordset.setPoints(ninds, inds1, points1, interpinds, inds2, points2, fract, show1); } void setPoints( int ninds, int *inds1, float *points1) { coordset.clean(); sceneMoving = false; coordset.setPoints(ninds, inds1, points1, 0, 0, 0, 0, true); } void renderScene(int *codes, ObjectStorer &r0s, ObjectStorer &r1s, ObjectStorer &r2s, ObjectStorer &r3s) { int i=0; DBG(dbg_renderer) << "renderScene\n"; while(codes[i] != 0) { DBG(dbg_renderer) << "Rendercode "<render0(); i += 1; } else if((codes[i] & RMASK) == RENDERABLE1) { Transform *cs1 = coordset.get(codes[i+1]); DBG(dbg_renderer) << "rend1 "<render1(*cs1); i += 2; } else if((codes[i] & RMASK) == RENDERABLE2) { Transform *cs1 = coordset.get(codes[i+1]); Transform *cs2 = coordset.get(codes[i+2]); DBG(dbg_renderer) << "rend2 "<render2(*cs1, *cs2); i += 3; } else if((codes[i] & RMASK) == RENDERABLE3) { Transform *cs1 = coordset.get(codes[i+1]); Transform *cs2 = coordset.get(codes[i+2]); Transform *cs3 = coordset.get(codes[i+3]); DBG(dbg_renderer) << "rend3 "<render(*cs1, *cs2, *cs3); */ i += 4; } else { // We have a problem cout << "HELP!\n"; std::cerr << "We seem to have a problem!!! "<