| 271 | { |
| 272 | public: |
| 273 | Asset( const Engine & engine, vk::Extent2D extent ) |
| 274 | { |
| 275 | auto device_handle = engine.device.get(); |
| 276 | vk::su::BufferData vertexBufferData( engine.physicalDevice, device_handle, sizeof( texturedCubeData ), vk::BufferUsageFlagBits::eVertexBuffer ); |
| 277 | vk::su::copyToDevice( device_handle, vertexBufferData.deviceMemory, texturedCubeData, sizeof( texturedCubeData ) / sizeof( texturedCubeData[0] ) ); |
| 278 | |
| 279 | vertexBuffer = vk::SharedBuffer{ vertexBufferData.buffer, engine.device }; |
| 280 | vertexBufferMemory = vk::SharedDeviceMemory{ vertexBufferData.deviceMemory, engine.device }; |
| 281 | |
| 282 | engine.commandBuffer->begin( vk::CommandBufferBeginInfo() ); |
| 283 | |
| 284 | vk::su::BufferData uniformBufferData( engine.physicalDevice, device_handle, sizeof( glm::mat4x4 ), vk::BufferUsageFlagBits::eUniformBuffer ); |
| 285 | glm::mat4x4 mvpcMatrix = vk::su::createModelViewProjectionClipMatrix( extent ); |
| 286 | vk::su::copyToDevice( device_handle, uniformBufferData.deviceMemory, mvpcMatrix ); |
| 287 | |
| 288 | uniformBufferMemory = vk::SharedDeviceMemory{ uniformBufferData.deviceMemory, engine.device }; |
| 289 | uniformBuffer = vk::SharedBuffer{ uniformBufferData.buffer, engine.device }; |
| 290 | |
| 291 | vk::su::TextureData textureData( engine.physicalDevice, device_handle ); |
| 292 | textureData.setImage( device_handle, engine.commandBuffer.get(), vk::su::CheckerboardImageGenerator() ); |
| 293 | |
| 294 | textureImage = vk::SharedImage{ textureData.imageData->image, engine.device }; |
| 295 | textureImageMemory = vk::SharedDeviceMemory{ textureData.imageData->deviceMemory, engine.device }; |
| 296 | textureImageView = vk::SharedImageView{ textureData.imageData->imageView, engine.device }; |
| 297 | textureSampler = vk::SharedSampler{ textureData.sampler, engine.device }; |
| 298 | |
| 299 | vk::su::updateDescriptorSets( |
| 300 | device_handle, engine.descriptorSet.get(), { { vk::DescriptorType::eUniformBuffer, uniformBufferData.buffer, VK_WHOLE_SIZE, {} } }, textureData ); |
| 301 | engine.commandBuffer->end(); |
| 302 | |
| 303 | vk::su::submitAndWait( device_handle, engine.graphicsQueue.get(), engine.commandBuffer.get() ); |
| 304 | } |
| 305 | |
| 306 | void draw( vk::CommandBuffer commandBuffer ) |
| 307 | { |
nothing calls this directly
no test coverage detected