diff --git a/src/vht/App.cppm b/src/vht/App.cppm
index 3fdbcd8..0a0c9cf 100644
--- a/src/vht/App.cppm
+++ b/src/vht/App.cppm
@@ -17,6 +17,7 @@ import InputAssembly;
 import UniformBuffer;
 import TextureSampler;
 import Descriptor;
+import QueryPool;
 import Drawer;
 
 export namespace vht {
@@ -34,6 +35,7 @@ export namespace vht {
         std::shared_ptr<vht::UniformBuffer> m_uniform_buffer{ nullptr };
         std::shared_ptr<vht::TextureSampler> m_texture_sampler{ nullptr };
         std::shared_ptr<vht::Descriptor> m_descriptor{ nullptr };
+        std::shared_ptr<vht::QueryPool> m_query_pool{ nullptr };
         std::shared_ptr<vht::Drawer> m_drawer{ nullptr };
     public:
         void run() {
@@ -72,6 +74,8 @@ export namespace vht {
             std::println("input assembly created");
             init_descriptor();
             std::println("descriptor created");
+            init_query_pool(); // 初始化查询池
+            std::println("query pool created");
             init_drawer();
             std::println("drawer created");
         }
@@ -88,6 +92,7 @@ export namespace vht {
         void init_uniform_buffer() { m_uniform_buffer = std::make_shared<vht::UniformBuffer>( m_window, m_device, m_swapchain ); }
         void init_texture_sampler() { m_texture_sampler = std::make_shared<vht::TextureSampler>( m_device, m_command_pool ); }
         void init_descriptor() { m_descriptor = std::make_shared<vht::Descriptor>( m_device, m_graphics_pipeline, m_uniform_buffer, m_texture_sampler ); }
+        void init_query_pool() { m_query_pool = std::make_shared<vht::QueryPool>( m_device ); }
         void init_drawer() {
             m_drawer = std::make_shared<vht::Drawer>(
                 m_data_loader,
@@ -99,7 +104,8 @@ export namespace vht {
                 m_command_pool,
                 m_input_assembly,
                 m_uniform_buffer,
-                m_descriptor
+                m_descriptor,
+                m_query_pool
             );
         }
     };
