33#pragma once
44
55// Interface
6- IC HRESULT CreateQuery ( ID3DQuery * * ppQuery , D3DQUERYTYPE Type );
7- IC HRESULT GetData ( ID3DQuery * pQuery , void * pData , UINT DataSize );
8- IC HRESULT BeginQuery ( ID3DQuery * pQuery );
9- IC HRESULT EndQuery ( ID3DQuery * pQuery );
6+
7+ #ifdef USE_OGL
8+
9+ IC HRESULT CreateQuery (GLuint * pQuery );
10+ IC HRESULT GetData (GLuint query , void * pData , UINT DataSize );
11+ IC HRESULT BeginQuery (GLuint query );
12+ IC HRESULT EndQuery (GLuint query );
13+ IC HRESULT ReleaseQuery (GLuint pQuery );
14+
15+ #else
16+
17+ IC HRESULT CreateQuery (ID3DQuery * * ppQuery );
18+ IC HRESULT GetData (ID3DQuery * pQuery , void * pData , UINT DataSize );
19+ IC HRESULT BeginQuery (ID3DQuery * pQuery );
20+ IC HRESULT EndQuery (ID3DQuery * pQuery );
21+ IC HRESULT ReleaseQuery (ID3DQuery * pQuery );
22+
23+ #endif // USE_OGL
1024
1125// Implementation
1226
13- #if defined(USE_DX11 )
27+ #if defined(USE_OGL )
28+
29+ IC HRESULT CreateQuery (GLuint * pQuery )
30+ {
31+ glGenQueries (1 , pQuery );
32+ return S_OK ;
33+ }
34+
35+ IC HRESULT GetData (GLuint query , void * pData , UINT DataSize )
36+ {
37+ if (DataSize == sizeof (GLint64 ))
38+ CHK_GL (glGetQueryObjecti64v (query , GL_QUERY_RESULT , (GLint64 * )pData ));
39+ else
40+ CHK_GL (glGetQueryObjectiv (query , GL_QUERY_RESULT , (GLint * )pData ));
41+ return S_OK ;
42+ }
43+
44+ IC HRESULT BeginQuery (GLuint query )
45+ {
46+ CHK_GL (glBeginQuery (GL_SAMPLES_PASSED , query ));
47+ return S_OK ;
48+ }
49+
50+ IC HRESULT EndQuery (GLuint query )
51+ {
52+ CHK_GL (glEndQuery (GL_SAMPLES_PASSED ));
53+ return S_OK ;
54+ }
1455
15- IC HRESULT CreateQuery ( ID3DQuery * * ppQuery , D3DQUERYTYPE Type )
56+ IC HRESULT ReleaseQuery (GLuint query )
57+ {
58+ CHK_GL (glDeleteQueries (1 , & query ));
59+ return S_OK ;
60+ }
61+
62+ #elif defined(USE_DX11 )
63+
64+ IC HRESULT CreateQuery ( ID3DQuery * * ppQuery )
1665{
1766 D3D_QUERY_DESC desc ;
1867 desc .MiscFlags = 0 ;
19-
20- switch (Type )
21- {
22- case D3DQUERYTYPE_OCCLUSION :
23- desc .Query = D3D_QUERY_OCCLUSION ;
24- break ;
25- default :
26- VERIFY (!"No default." );
27- }
28-
68+ desc .Query = D3D_QUERY_OCCLUSION ;
2969 return HW .pDevice -> CreateQuery ( & desc , ppQuery );
3070}
3171
@@ -49,20 +89,11 @@ IC HRESULT EndQuery( ID3DQuery *pQuery)
4989
5090#elif defined(USE_DX10 )
5191
52- IC HRESULT CreateQuery ( ID3DQuery * * ppQuery , D3DQUERYTYPE Type )
92+ IC HRESULT CreateQuery ( ID3DQuery * * ppQuery )
5393{
5494 D3D_QUERY_DESC desc ;
5595 desc .MiscFlags = 0 ;
56-
57- switch (Type )
58- {
59- case D3DQUERYTYPE_OCCLUSION :
60- desc .Query = D3D_QUERY_OCCLUSION ;
61- break ;
62- default :
63- VERIFY (!"No default." );
64- }
65-
96+ desc .Query = D3D_QUERY_OCCLUSION ;
6697 return HW .pDevice -> CreateQuery ( & desc , ppQuery );
6798}
6899
@@ -86,9 +117,9 @@ IC HRESULT EndQuery( ID3DQuery *pQuery)
86117
87118#else // USE_DX10
88119
89- IC HRESULT CreateQuery ( ID3DQuery * * ppQuery , D3DQUERYTYPE Type )
120+ IC HRESULT CreateQuery ( ID3DQuery * * ppQuery )
90121{
91- return HW .pDevice -> CreateQuery (Type , ppQuery );
122+ return HW .pDevice -> CreateQuery (D3D_QUERY_OCCLUSION , ppQuery );
92123}
93124
94125IC HRESULT GetData ( ID3DQuery * pQuery , void * pData , UINT DataSize )
0 commit comments