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