bool XboxController::WasButtonHeldForMs(XboxButtons buttonType, WORD buttonState, int milliseconds) {
	if (IsButtonJustPressed(buttonType, buttonState)) {
		pressTime[buttonType] = milliseconds_now();
	}
	if (IsButtonJustReleased(buttonType, buttonState)) {
		releaseTime[buttonType] = milliseconds_now();
	}

	if ((releaseTime[buttonType] - pressTime[buttonType]) >= milliseconds) {
		pressTime[buttonType] = 0;
		releaseTime[buttonType] = 0;
		return true;
	}
	return false;
}
int main()
{
    int number_iterations = 1000;
    unsigned int width = 1920;
    unsigned int hight = 1080;
    char* image = new char[width * hight];
    //ZeroMemory(image, width * hight);

    char* imageDest = new char[width * hight];
    //ZeroMemory(imageDest, width * hight);

    //image[0] = 0x55;
    
    __int64 *image64 = (__int64*)image;
    __int64 *imageDesc64 = (__int64*)imageDest;

    long long start = 0;
    long long end = 0;

    start = milliseconds_now();
    for (size_t i = 0; i < number_iterations; i++)
    {
        int lenght64 = (width * hight) / sizeof(__int64);
        while (lenght64--)
        {
            imageDesc64[lenght64] ^= image64[lenght64];
        }
    }
    end = milliseconds_now();
    std::cout << "Pointer 64---:" << end - start << "ms." << std::endl;

    //image[1] = 0xAA;

    start = milliseconds_now();
    for (size_t i = 0; i < number_iterations; i++)
    {
        int lenght = (width * hight);
        while (lenght--)
        {
            imageDest[lenght] ^= image[lenght];
        }
    }
    end = milliseconds_now();
    std::cout << "Pointer 8:" << end - start << "ms." << std::endl;

    return 0;
}
Esempio n. 3
0
void Engine::Renderer::mainLoop(GameLoop *gameLoop)
{
	MSG msg;
	long long startTime, currentTime, newTime, frameTime;
	long long accumulator = 0;
	long long dt = 16;

	if (gameLoop == NULL)
	{
		MessageBox(NULL, TEXT("Wrong GameLoop"), TEXT(__FILE__), MB_OK);
		abort();
	}

	_stopLoop = FALSE;

	gameLoop->reshape(_width, _height);

	startTime = milliseconds_now();
	currentTime = milliseconds_now() - startTime;

	while (!_stopLoop)
	{
		while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
			switch (msg.message)
			{
			case WM_QUIT:
				_stopLoop = TRUE;
				break;
			}
		}

		newTime = milliseconds_now() - startTime;
		frameTime = newTime - currentTime;
		currentTime = newTime;

		for (accumulator += frameTime; accumulator >= dt; accumulator -= dt)
			gameLoop->idle(currentTime);

		gameLoop->display((FLOAT)accumulator / dt);
		_pSwapChain->Present(0, 0);
	}
}