diff -Nauwr Irrlicht/CD3D8Driver.cpp Irrlicht/CD3D8Driver.cpp --- Irrlicht/CD3D8Driver.cpp 2005-08-20 22:25:10.000000000 +0200 +++ Irrlicht/CD3D8Driver.cpp 2005-09-21 19:37:04.000000000 +0200 @@ -280,7 +280,7 @@ if (pureSoftware) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hwnd, - D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if (FAILED(hr)) os::Printer::log("Was not able to create Direct3D8 software device.", ELL_ERROR); @@ -288,17 +288,17 @@ else { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_HARDWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if(FAILED(hr)) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_MIXED_VERTEXPROCESSING , &present, &pID3DDevice); + D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE , &present, &pID3DDevice); if(FAILED(hr)) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if (FAILED(hr)) os::Printer::log("Was not able to create Direct3D8 device.", ELL_ERROR); diff -Nauwr Irrlicht/CD3D9Driver.cpp Irrlicht/CD3D9Driver.cpp --- Irrlicht/CD3D9Driver.cpp 2005-08-20 22:25:16.000000000 +0200 +++ Irrlicht/CD3D9Driver.cpp 2005-09-23 10:19:28.000000000 +0200 @@ -300,11 +300,10 @@ // create device - if (pureSoftware) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hwnd, - D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if (FAILED(hr)) os::Printer::log("Was not able to create Direct3D9 software device.", ELL_ERROR); @@ -312,17 +311,17 @@ else { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_HARDWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if(FAILED(hr)) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_MIXED_VERTEXPROCESSING , &present, &pID3DDevice); + D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if(FAILED(hr)) { hr = pID3D->CreateDevice( D3DADAPTER_DEFAULT, devtype, hwnd, - D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice); + D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present, &pID3DDevice); if (FAILED(hr)) os::Printer::log("Was not able to create Direct3D9 device.", ELL_ERROR);