def free(self): api, i, d = self.api, self.instance, self.device hvk.device_wait_idle(api, d) hvk.destroy_command_pool(api, d, self.command_pool) hvk.destroy_fence(api, d, self.setup_fence) for scene in self.graph: scene.free() self.compute_runner.free() self.renderer.free() self.render_target.free() self.memory_manager.free() hvk.destroy_swapchain(api, d, self.swapchain) hvk.destroy_device(api, d) hvk.destroy_surface(api, i, self.surface) if self.debugger is not None: self.debugger.stop() if self.debug_ui is not None: self.debug_ui.close() hvk.destroy_instance(api, i) self.window.destroy()
def clean_resources(): window.hide() hvk.device_wait_idle(api, device) hvk.destroy_fence(api, device, staging_fence) hvk.destroy_command_pool(api, device, staging_pool) hvk.destroy_command_pool(api, device, drawing_pool) hvk.destroy_buffer(api, device, mesh_buffer) hvk.free_memory(api, device, mesh_memory) hvk.destroy_sampler(api, device, texture_sampler) hvk.destroy_image_view(api, device, texture_view) hvk.destroy_image(api, device, texture_image) hvk.free_memory(api, device, texture_image_memory) hvk.destroy_descriptor_pool(api, device, descriptor_pool) hvk.destroy_buffer(api, device, uniforms_buffer) hvk.free_memory(api, device, uniforms_mem) hvk.destroy_pipeline(api, device, pipeline) hvk.destroy_pipeline_cache(api, device, pipeline_cache) hvk.destroy_pipeline_layout(api, device, pipeline_layout) for m in shader_modules: hvk.destroy_shader_module(api, device, m) hvk.destroy_descriptor_set_layout(api, device, descriptor_set_layout) for fb in framebuffers: hvk.destroy_framebuffer(api, device, fb) hvk.destroy_render_pass(api, device, render_pass) hvk.destroy_semaphore(api, device, image_ready) hvk.destroy_semaphore(api, device, rendering_done) for f in render_fences: hvk.destroy_fence(api, device, f) hvk.destroy_image(api, device, depth_stencil) hvk.destroy_image_view(api, device, depth_view) hvk.free_memory(api, device, depth_alloc) for v in swapchain_image_views: hvk.destroy_image_view(api, device, v) hvk.destroy_swapchain(api, device, swapchain) hvk.destroy_device(api, device) hvk.destroy_surface(api, instance, surface) debugger.stop() hvk.destroy_instance(api, instance) window.destroy()
setup_vertex_input_binding() create_pipeline() create_render_resources() record_render_commands() window.show() # Render loop render_ok = True while not window.must_exit: window.translate_system_events() for event, event_data in window.events: if event is e.WindowResized: hvk.device_wait_idle(api, device) create_swapchain(True) setup_swapchain_image_views(True) setup_swapchain_depth_stencil(True) create_render_pass(True) create_framebuffers(True) create_pipeline(True) create_render_resources(True) record_render_commands() elif event is e.RenderEnable: render_ok = True elif event is e.RenderDisable: render_ok = False
def disable(self): _, api, device = self.ctx hvk.device_wait_idle(api, device) self.enabled = False
def _update_swapchain(self, resize_data): hvk.device_wait_idle(self.api, self.device) self._setup_swapchain() self.render_target._update_swapchain() self.renderer._setup_render_cache() self.graph[self.current_scene_index]._setup_render_cache()