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.
6 //// Copyright (c) Microsoft Corporation. All rights reserved
10 #include "BasicReaderWriter.h"
16 _In_ ID3D11Device* d3dDevice,
17 _In_opt_ IWICImagingFactory2* wicFactory = nullptr
21 _In_ Platform::String^ filename,
22 _Out_opt_ ID3D11Texture2D** texture,
23 _Out_opt_ ID3D11ShaderResourceView** textureView
26 concurrency::task<void> LoadTextureAsync(
27 _In_ Platform::String^ filename,
28 _Out_opt_ ID3D11Texture2D** texture,
29 _Out_opt_ ID3D11ShaderResourceView** textureView
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
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
49 _In_ Platform::String^ filename,
50 _Out_ ID3D11PixelShader** shader
53 concurrency::task<void> LoadShaderAsync(
54 _In_ Platform::String^ filename,
55 _Out_ ID3D11PixelShader** shader
59 _In_ Platform::String^ filename,
60 _Out_ ID3D11ComputeShader** shader
63 concurrency::task<void> LoadShaderAsync(
64 _In_ Platform::String^ filename,
65 _Out_ ID3D11ComputeShader** shader
69 _In_ Platform::String^ filename,
70 _Out_ ID3D11GeometryShader** shader
73 concurrency::task<void> LoadShaderAsync(
74 _In_ Platform::String^ filename,
75 _Out_ ID3D11GeometryShader** shader
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
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
99 _In_ Platform::String^ filename,
100 _Out_ ID3D11HullShader** shader
103 concurrency::task<void> LoadShaderAsync(
104 _In_ Platform::String^ filename,
105 _Out_ ID3D11HullShader** shader
109 _In_ Platform::String^ filename,
110 _Out_ ID3D11DomainShader** shader
113 concurrency::task<void> LoadShaderAsync(
114 _In_ Platform::String^ filename,
115 _Out_ ID3D11DomainShader** shader
119 _In_ Platform::String^ filename,
120 _Out_ ID3D11Buffer** vertexBuffer,
121 _Out_ ID3D11Buffer** indexBuffer,
122 _Out_opt_ uint32* vertexCount,
123 _Out_opt_ uint32* indexCount
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
135 Microsoft::WRL::ComPtr<ID3D11Device> m_d3dDevice;
136 Microsoft::WRL::ComPtr<IWICImagingFactory2> m_wicFactory;
137 BasicReaderWriter^ m_basicReaderWriter;
139 template <class DeviceChildType>
140 inline void SetDebugName(
141 _In_ DeviceChildType* object,
142 _In_ Platform::String^ name
145 Platform::String^ GetExtension(
146 _In_ Platform::String^ filename
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
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
168 _Out_ ID3D11Buffer** vertexBuffer,
169 _Out_ ID3D11Buffer** indexBuffer,
170 _Out_opt_ uint32* vertexCount,
171 _Out_opt_ uint32* indexCount,
172 _In_opt_ Platform::String^ debugName