@@ -112,6 +112,7 @@ template created_gpu_object_array<asset::ICPUDescriptorSetLayout> IDriver::getGP
112
112
template created_gpu_object_array<asset::ICPUSampler> IDriver::getGPUObjectsFromAssets<asset::ICPUSampler>(const asset::ICPUSampler* const * const , const asset::ICPUSampler* const * const , IGPUObjectFromAssetConverter* _converter);
113
113
template created_gpu_object_array<asset::ICPUDescriptorSet> IDriver::getGPUObjectsFromAssets<asset::ICPUDescriptorSet>(const asset::ICPUDescriptorSet* const * const , const asset::ICPUDescriptorSet* const * const , IGPUObjectFromAssetConverter* _converter);
114
114
115
+
115
116
template <typename AssetType>
116
117
created_gpu_object_array<AssetType> IDriver::getGPUObjectsFromAssets (const core::smart_refctd_ptr<AssetType>* _begin, const core::smart_refctd_ptr<AssetType>* _end, IGPUObjectFromAssetConverter* _converter)
117
118
{
@@ -136,6 +137,38 @@ template created_gpu_object_array<asset::ICPUDescriptorSetLayout> IDriver::getGP
136
137
template created_gpu_object_array<asset::ICPUSampler> IDriver::getGPUObjectsFromAssets<asset::ICPUSampler>(const core::smart_refctd_ptr<asset::ICPUSampler>*, const core::smart_refctd_ptr<asset::ICPUSampler>*, IGPUObjectFromAssetConverter* _converter);
137
138
template created_gpu_object_array<asset::ICPUDescriptorSet> IDriver::getGPUObjectsFromAssets<asset::ICPUDescriptorSet>(const core::smart_refctd_ptr<asset::ICPUDescriptorSet>*, const core::smart_refctd_ptr<asset::ICPUDescriptorSet>*, IGPUObjectFromAssetConverter* _converter);
138
139
140
+
141
+ // TODO: would be nice if something like this worked... eh might have to resort to a Macro
142
+ #if 0
143
+ template<typename AssetType>
144
+ struct SingleFunctionInstantiator
145
+ {
146
+ protected:
147
+ static auto instantiate(IDriver* driver)
148
+ {
149
+ core::smart_refctd_ptr<AssetType> smartptr;
150
+
151
+ created_gpu_object_array<AssetType> retval = driver->getGPUObjectsFromAssets<AssetType>(core::SRange<const core::smart_refctd_ptr<asset::IAsset>>(nullptr, nullptr), nullptr);
152
+ retval = driver->getGPUObjectsFromAssets<AssetType>(&smartptr.get(), &smartptr.get(), nullptr);
153
+ retval = driver->getGPUObjectsFromAssets<AssetType>(&smartptr, &smartptr, nullptr);
154
+ return retval;
155
+ }
156
+ };
157
+ template<typename... AssetTypes>
158
+ struct MultiFunctionInstantiator : public SingleFunctionInstantiator<AssetTypes>...
159
+ {
160
+ };
161
+
162
+ template MultiFunctionInstantiator<asset::ICPUBuffer,
163
+ asset::ICPUShader, asset::ICPUImage, asset::ICPUSkeleton,
164
+ asset::ICPUSpecializedShader, asset::ICPUImageView, asset::ICPUSampler,
165
+ asset::ICPUDescriptorSetLayout,
166
+ asset::ICPUDescriptorSet, asset::ICPUPipelineLayout,
167
+ asset::ICPUComputePipeline, asset::ICPURenderpassIndependentPipeline,
168
+ asset::ICPUMeshBuffer,
169
+ asset::ICPUMesh
170
+ >;
171
+ #endif
139
172
}
140
173
}
141
174
0 commit comments