1 #include "context_d3d9.h"
2 
3 #include <cassert>
4 #include <stdexcept>
5 
6 #include "d3d9_util.h"
7 
8 #include "leak_dumper.h"
9 
10 using namespace std;
11 
12 namespace Shared{ namespace Graphics{ namespace D3d9{
13 
14 // ===============================================
15 //	class ContextD3d9
16 // ===============================================
17 
ContextD3d9()18 ContextD3d9::ContextD3d9(){
19 	windowed= true;
20 	hardware= true;
21 }
22 
init()23 void ContextD3d9::init(){
24 
25 	//create object
26 	d3dObject= Direct3DCreate9(D3D_SDK_VERSION);
27 	if(d3dObject==NULL){
28 		throw runtime_error("Direct3DCreate9==NULL");
29 	}
30 
31 	//present parameters
32 	memset(&d3dPresentParameters, 0, sizeof(d3dPresentParameters));
33 	d3dPresentParameters.Windowed = TRUE;
34 	d3dPresentParameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
35 	d3dPresentParameters.BackBufferFormat = D3DFMT_A8R8G8B8;
36 	d3dPresentParameters.EnableAutoDepthStencil= TRUE;
37 	d3dPresentParameters.AutoDepthStencilFormat= D3DFMT_D24X8;
38 	d3dPresentParameters.PresentationInterval= D3DPRESENT_INTERVAL_IMMEDIATE;
39 
40 	//create device
41 	D3DCALL(d3dObject->CreateDevice(
42 		D3DADAPTER_DEFAULT,
43 		hardware? D3DDEVTYPE_HAL: D3DDEVTYPE_REF,
44 		GetActiveWindow(),
45 		hardware? D3DCREATE_HARDWARE_VERTEXPROCESSING: D3DCREATE_SOFTWARE_VERTEXPROCESSING,
46         &d3dPresentParameters,
47 		&d3dDevice));
48 
49 	//get caps
50 	D3DCALL(d3dDevice->GetDeviceCaps(&caps));
51 }
52 
end()53 void ContextD3d9::end(){
54 	D3DCALL(d3dDevice->Release());
55 	D3DCALL(d3dObject->Release());
56 }
57 
makeCurrent()58 void ContextD3d9::makeCurrent(){
59 
60 }
61 
swapBuffers()62 void ContextD3d9::swapBuffers(){
63 	D3DCALL(d3dDevice->Present(NULL, NULL, NULL, NULL));
64 }
65 
reset()66 void ContextD3d9::reset(){
67 	d3dPresentParameters.BackBufferWidth= 0;
68 	d3dPresentParameters.BackBufferHeight= 0;
69 	D3DCALL(d3dDevice->Reset(&d3dPresentParameters));
70 }
71 
72 
73 }}}//end namespace