Mapping::Mapping(Robot *robot,Techniques tech) : QObject(), lasers(NULL), sonares(NULL), sensores(NULL) { mRobot = robot; this->technique = tech; thread = new QThread(); this->moveToThread(thread); rangeMax = 5000; celRange = 2*30000/MAP_LENGTH_WORLD; connect(thread,SIGNAL(started()),this,SLOT(keepRendering())); connect(thread,SIGNAL(finished()),this,SLOT(finishRendering())); }
static void mainLoop() { addCallbacks(retracer); long long startTime = 0; frameNo = 0; startTime = os::getTime(); if (singleThread) { trace::Call *call; while ((call = parser->parse_call())) { retraceCall(call); delete call; } } else { RelayRace race; race.run(); } finishRendering(); long long endTime = os::getTime(); float timeInterval = (endTime - startTime) * (1.0 / os::timeFrequency); if ((retrace::verbosity >= -1) || (retrace::profiling)) { std::cout << "Rendered " << frameNo << " frames" " in " << timeInterval << " secs," " average of " << (frameNo/timeInterval) << " fps\n"; } if (waitOnFinish) { waitForInput(); } else { return; } }
static void mainLoop() { addCallbacks(retracer); long long startTime = 0; frameNo = 0; startTime = os::getTime(); if (singleThread) { trace::Call *call; while ((call = parser.parse_call())) { retraceCall(call); delete call; }; } else { RelayRace race; race.run(); } finishRendering(); long long endTime = os::getTime(); float timeInterval = (endTime - startTime) * (1.0 / os::timeFrequency); if ((retrace::verbosity >= -1) || (retrace::profiling)) { std::cout << "Rendered " << frameNo << " frames" " in " << timeInterval << " secs," " average of " << (frameNo/timeInterval) << " fps\n"; std::cout << std::endl; std::cout << "Total number of calls: " << nCalls.tot() << std::endl; std::cout << "Average number of calls: " << nCalls.avg() << std::endl; std::cout << "Minimum number of calls: " << nCalls.min() << std::endl; std::cout << "Maximum number of calls: " << nCalls.max() << std::endl; std::cout << std::endl; std::cout << "Total number of render calls: " << nRenderCalls.tot() << std::endl; std::cout << "Average number of render calls: " << nRenderCalls.avg() << std::endl; std::cout << "Minimum number of render calls: " << nRenderCalls.min() << std::endl; std::cout << "Maximum number of render calls: " << nRenderCalls.max() << std::endl; std::cout << std::endl; std::cout << "Total texel uploads: " << texUploads.tot() << std::endl; std::cout << "Average texel uploads: " << texUploads.avg() << std::endl; std::cout << "Minimum texel uploads: " << texUploads.min() << std::endl; std::cout << "Maximum texel uploads: " << texUploads.max() << std::endl; std::cout << std::endl; std::cout << "Total number of triangles: " << nTriangles.tot() << std::endl; std::cout << "Average number of triangles: " << nTriangles.avg() << std::endl; std::cout << "Minimum number of triangles: " << nTriangles.min() << std::endl; std::cout << "Maximum number of triangles: " << nTriangles.max() << std::endl; std::cout << std::endl; std::cout << "Total number of vertices: " << nVertices.tot() << std::endl; std::cout << "Average number of vertices: " << nVertices.avg() << std::endl; std::cout << "Minimum number of vertices: " << nVertices.min() << std::endl; std::cout << "Maximum number of vertices: " << nVertices.max() << std::endl; } if (waitOnFinish) { waitForInput(); } else { return; } }
void Renderer::executeTask(int threadIndex) { #if PERF_HUD int64_t startTick = Timer::ticks(); #endif switch(task[threadIndex].type) { case Task::PRIMITIVES: { int unit = task[threadIndex].primitiveUnit; int input = primitiveProgress[unit].firstPrimitive; int count = primitiveProgress[unit].primitiveCount; DrawCall *draw = drawList[primitiveProgress[unit].drawCall & DRAW_COUNT_BITS]; int (Renderer::*setupPrimitives)(int batch, int count) = draw->setupPrimitives; processPrimitiveVertices(unit, input, count, draw->count, threadIndex); #if PERF_HUD int64_t time = Timer::ticks(); vertexTime[threadIndex] += time - startTick; startTick = time; #endif int visible = 0; if(!draw->setupState.rasterizerDiscard) { visible = (this->*setupPrimitives)(unit, count); } primitiveProgress[unit].visible = visible; primitiveProgress[unit].references = clusterCount; #if PERF_HUD setupTime[threadIndex] += Timer::ticks() - startTick; #endif } break; case Task::PIXELS: { int unit = task[threadIndex].primitiveUnit; int visible = primitiveProgress[unit].visible; if(visible > 0) { int cluster = task[threadIndex].pixelCluster; Primitive *primitive = primitiveBatch[unit]; DrawCall *draw = drawList[pixelProgress[cluster].drawCall & DRAW_COUNT_BITS]; DrawData *data = draw->data; PixelProcessor::RoutinePointer pixelRoutine = draw->pixelPointer; pixelRoutine(primitive, visible, cluster, data); } finishRendering(task[threadIndex]); #if PERF_HUD pixelTime[threadIndex] += Timer::ticks() - startTick; #endif } break; case Task::RESUME: break; case Task::SUSPEND: break; default: ASSERT(false); } }