Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

45 строки
858B

  1. use crate::render::Device;
  2. use ash::{version::DeviceV1_0, vk};
  3. use std::rc::Rc;
  4. pub struct Fence {
  5. handle: vk::Fence,
  6. pub device: Rc<Device>,
  7. }
  8. impl Fence {
  9. pub fn create(device: Rc<Device>) -> Result<Rc<Self>, vk::Result> {
  10. let create_info = vk::FenceCreateInfo {
  11. flags: vk::FenceCreateFlags::SIGNALED,
  12. ..Default::default()
  13. };
  14. let handle = unsafe { device.create_fence(&create_info, None)? };
  15. Ok(Rc::new(Self { handle, device }))
  16. }
  17. pub fn create_all(
  18. device: Rc<Device>,
  19. num: usize,
  20. ) -> Result<Vec<Rc<Self>>, vk::Result> {
  21. (0..num).map(|_| Self::create(device.clone())).collect()
  22. }
  23. }
  24. impl Drop for Fence {
  25. fn drop(&mut self) {
  26. unsafe {
  27. self.device.destroy_fence(self.handle, None);
  28. }
  29. }
  30. }
  31. impl std::ops::Deref for Fence {
  32. type Target = vk::Fence;
  33. fn deref(&self) -> &Self::Target {
  34. &self.handle
  35. }
  36. }
  37. // EOF