OSDN Git Service

Boost.MSMでメニュー部分を実装
[shooting3/shootinggame.git] / ShootingGame / BasicLoader.h
1 //// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
2 //// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
3 //// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
4 //// PARTICULAR PURPOSE.
5 ////
6 //// Copyright (c) Microsoft Corporation. All rights reserved
7
8 #pragma once
9
10 #include "BasicReaderWriter.h"
11
12 ref class BasicLoader
13 {
14 internal:
15     BasicLoader(
16         _In_ ID3D11Device* d3dDevice,
17         _In_opt_ IWICImagingFactory2* wicFactory = nullptr
18         );
19
20     void LoadTexture(
21         _In_ Platform::String^ filename,
22         _Out_opt_ ID3D11Texture2D** texture,
23         _Out_opt_ ID3D11ShaderResourceView** textureView
24         );
25
26     concurrency::task<void> LoadTextureAsync(
27         _In_ Platform::String^ filename,
28         _Out_opt_ ID3D11Texture2D** texture,
29         _Out_opt_ ID3D11ShaderResourceView** textureView
30         );
31
32     void LoadShader(
33         _In_ Platform::String^ filename,
34         _In_reads_opt_(layoutDescNumElements) D3D11_INPUT_ELEMENT_DESC layoutDesc[],
35         _In_ uint32 layoutDescNumElements,
36         _Out_ ID3D11VertexShader** shader,
37         _Out_opt_ ID3D11InputLayout** layout
38         );
39
40     concurrency::task<void> LoadShaderAsync(
41         _In_ Platform::String^ filename,
42         _In_reads_opt_(layoutDescNumElements) D3D11_INPUT_ELEMENT_DESC layoutDesc[],
43         _In_ uint32 layoutDescNumElements,
44         _Out_ ID3D11VertexShader** shader,
45         _Out_opt_ ID3D11InputLayout** layout
46         );
47
48     void LoadShader(
49         _In_ Platform::String^ filename,
50         _Out_ ID3D11PixelShader** shader
51         );
52
53     concurrency::task<void> LoadShaderAsync(
54         _In_ Platform::String^ filename,
55         _Out_ ID3D11PixelShader** shader
56         );
57
58     void LoadShader(
59         _In_ Platform::String^ filename,
60         _Out_ ID3D11ComputeShader** shader
61         );
62
63     concurrency::task<void> LoadShaderAsync(
64         _In_ Platform::String^ filename,
65         _Out_ ID3D11ComputeShader** shader
66         );
67
68     void LoadShader(
69         _In_ Platform::String^ filename,
70         _Out_ ID3D11GeometryShader** shader
71         );
72
73     concurrency::task<void> LoadShaderAsync(
74         _In_ Platform::String^ filename,
75         _Out_ ID3D11GeometryShader** shader
76         );
77
78     void LoadShader(
79         _In_ Platform::String^ filename,
80         _In_reads_opt_(numEntries) const D3D11_SO_DECLARATION_ENTRY* streamOutDeclaration,
81         _In_ uint32 numEntries,
82         _In_reads_opt_(numStrides) const uint32* bufferStrides,
83         _In_ uint32 numStrides,
84         _In_ uint32 rasterizedStream,
85         _Out_ ID3D11GeometryShader** shader
86         );
87
88     concurrency::task<void> LoadShaderAsync(
89         _In_ Platform::String^ filename,
90         _In_reads_opt_(numEntries) const D3D11_SO_DECLARATION_ENTRY* streamOutDeclaration,
91         _In_ uint32 numEntries,
92         _In_reads_opt_(numStrides) const uint32* bufferStrides,
93         _In_ uint32 numStrides,
94         _In_ uint32 rasterizedStream,
95         _Out_ ID3D11GeometryShader** shader
96         );
97
98     void LoadShader(
99         _In_ Platform::String^ filename,
100         _Out_ ID3D11HullShader** shader
101         );
102
103     concurrency::task<void> LoadShaderAsync(
104         _In_ Platform::String^ filename,
105         _Out_ ID3D11HullShader** shader
106         );
107
108     void LoadShader(
109         _In_ Platform::String^ filename,
110         _Out_ ID3D11DomainShader** shader
111         );
112
113     concurrency::task<void> LoadShaderAsync(
114         _In_ Platform::String^ filename,
115         _Out_ ID3D11DomainShader** shader
116         );
117
118     void LoadMesh(
119         _In_ Platform::String^ filename,
120         _Out_ ID3D11Buffer** vertexBuffer,
121         _Out_ ID3D11Buffer** indexBuffer,
122         _Out_opt_ uint32* vertexCount,
123         _Out_opt_ uint32* indexCount
124         );
125
126     concurrency::task<void> LoadMeshAsync(
127         _In_ Platform::String^ filename,
128         _Out_ ID3D11Buffer** vertexBuffer,
129         _Out_ ID3D11Buffer** indexBuffer,
130         _Out_opt_ uint32* vertexCount,
131         _Out_opt_ uint32* indexCount
132         );
133
134 private:
135     Microsoft::WRL::ComPtr<ID3D11Device> m_d3dDevice;
136     Microsoft::WRL::ComPtr<IWICImagingFactory2> m_wicFactory;
137     BasicReaderWriter^ m_basicReaderWriter;
138
139     template <class DeviceChildType>
140     inline void SetDebugName(
141         _In_ DeviceChildType* object,
142         _In_ Platform::String^ name
143         );
144
145     Platform::String^ GetExtension(
146         _In_ Platform::String^ filename
147         );
148
149     void CreateTexture(
150         _In_ bool decodeAsDDS,
151         _In_reads_bytes_(dataSize) byte* data,
152         _In_ uint32 dataSize,
153         _Out_opt_ ID3D11Texture2D** texture,
154         _Out_opt_ ID3D11ShaderResourceView** textureView,
155         _In_opt_ Platform::String^ debugName
156         );
157
158     void CreateInputLayout(
159         _In_reads_bytes_(bytecodeSize) byte* bytecode,
160         _In_ uint32 bytecodeSize,
161         _In_reads_opt_(layoutDescNumElements) D3D11_INPUT_ELEMENT_DESC* layoutDesc,
162         _In_ uint32 layoutDescNumElements,
163         _Out_ ID3D11InputLayout** layout
164         );
165
166     void CreateMesh(
167         _In_ byte* meshData,
168         _Out_ ID3D11Buffer** vertexBuffer,
169         _Out_ ID3D11Buffer** indexBuffer,
170         _Out_opt_ uint32* vertexCount,
171         _Out_opt_ uint32* indexCount,
172         _In_opt_ Platform::String^ debugName
173         );
174 };