Beispiel #1
0
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()));
}
Beispiel #2
0
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;
    }
}
Beispiel #3
0
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;
    }
}
Beispiel #4
0
	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);
		}
	}