예제 #1
0
/*******************************************************************
* WinMain
*******************************************************************/
int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
    //set up the application window
    if ( !initWindow(hWnd, hInstance, 800 , 600)) return -1;

    //initialize raw input
    if ( !InitializeRawInput() ) return -1;

    //create renderer
    if (!renderer.Initialize(&hWnd) ) return -1;

    //initialize test scene
    if (!renderer.InitializeScene() ) return -1;
    renderer.SetShadowMapBias( smBias);

    //camera setup
    float eye[3] = {0, 10, -10}, fp[3] = {9,9,0}, u[3] = {0,1,0};
    camera.PositionCamera(eye, fp, u);
    camera.SetPerspectiveProjectionLH(  0.785f, 4.0f/3, 1.0f, 1000.0f);
    camera.SetMovementSpeed( 10.0f );
    camera.Update();

    //show first frame and welcome message
    renderer.RenderFrame();
    MessageBox(	hWnd,
                L"T = Toggle Shadow Map Filtering\nY = Toggle Shadow Map Resolution\nU = Toggle Shadow Map Generation Method\n +/- = Adjust shadow map bias",
                L"DirectX10 Tutorial 10 - Shadow Mapping",
                MB_ICONINFORMATION );

    //frame timer
    HRTimer fTimer;
    fTimer.Reset();

    //main message loop
    MSG msg = {0};
    while (WM_QUIT != msg.message)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            //limit FPS to 60FPS - hack to reduce GPU squealing
            while ( fTimer.GetElapsedTimeMilliseconds() < 16 );

            renderer.RenderFrame();
            camera.Update();
            fTimer.Reset();
        }
    }

    //cleanup
    return 0;
}
예제 #2
0
/*******************************************************************
* WinMain
*******************************************************************/
int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
	

	RedirectIOToConsole();
	

	// Set up the application window
	if (!InitWindow( hInstance, nCmdShow, hWnd)) return 0;

	//set up direct x manager
	if (!dx.initialize(&hWnd , &hInstance)) return 0;

	// showing cursor:
	//ShowCursor(TRUE);

	//hTimer.StartTimer();
	// Main message loop
	hTimer.Reset();
    MSG msg = {0};
    while (WM_QUIT != msg.message)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);			
		}	
		else
		{
			//hTimer.
			hTimer.UpdateTime();
			dx.renderScene(&hTimer);
		}
    }

	return (int) msg.wParam;
}
예제 #3
0
int main()
{
#ifdef _DEBUG
    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    _CrtDumpMemoryLeaks();
#endif

    srand((unsigned int)time(NULL));

    _wmkdir(L"TempFiles");

    //ContructExample();

    printf("Timer is started!\n");
    timer.Reset();

    if (!FirstStep())
    {
        printf("First step: error occured!\n");
        _getch();

        return 0;
    }

    if (!SecondStep())
    {
        printf("Second step: error occured!\n");
        _getch();

        return 0;
    }

#ifdef DEBUG_INFO
    FILE *pFile = nullptr;
    fopen_s(&pFile, "task2result.txt", "rb");
    if (!pFile)
    {
        printf("task2result file hasn't readed: error occured!\n");
        _getch();

        return 0;
    }

    int *pTempArray = new int[MAX_ELEMS_IN_MEM];

    while (!feof(pFile))
    {
        int nNumReadedNumbs = 0;

        if (!(nNumReadedNumbs = fread_s(pTempArray, MAX_ELEMS_IN_MEM * 4, 4, MAX_ELEMS_IN_MEM, pFile)))
            break;

        for (int i = 0; i < nNumReadedNumbs; i++)
        {
            printf("%d ", pTempArray[i]);
        }
    }
    printf("\n\n");

    delete[] pTempArray;
    fclose(pFile);
#endif
    //printf("Test: %d\n", i);

    printf("The task has done!\n");
    printf("Time: %0.5f\n", timer.GetElapsed());

    //_getch();
    return 0;
}