diff --git a/src/utils/Drawer.cppm b/src/utils/Drawer.cppm
index 06c2e8f..addc9ba 100644
--- a/src/utils/Drawer.cppm
+++ b/src/utils/Drawer.cppm
@@ -20,6 +20,7 @@ import CommandPool;
 import InputAssembly;
 import UniformBuffer;
 import Descriptor;
+import QueryPool;
 
 export namespace vht {
 
@@ -53,6 +54,7 @@ export namespace vht {
         std::shared_ptr<vht::InputAssembly> m_input_assembly{ nullptr };
         std::shared_ptr<vht::UniformBuffer> m_uniform_buffer{ nullptr };
         std::shared_ptr<vht::Descriptor> m_descriptor{ nullptr };
+        std::shared_ptr<vht::QueryPool> m_query_pool; // 添加查询池成员
         std::vector<vk::raii::Semaphore> m_image_available_semaphores;
         std::vector<vk::raii::Semaphore> m_render_finished_semaphores;
         std::vector<vk::raii::Fence> m_in_flight_fences;
@@ -69,7 +71,8 @@ export namespace vht {
             std::shared_ptr<vht::CommandPool> command_pool,
             std::shared_ptr<vht::InputAssembly> input_assembly,
             std::shared_ptr<vht::UniformBuffer> uniform_buffer,
-            std::shared_ptr<vht::Descriptor> descriptor
+            std::shared_ptr<vht::Descriptor> descriptor,
+            std::shared_ptr<vht::QueryPool> query_pool // 添加查询池参数
         ):  m_data_loader(std::move(data_loader)),
             m_window(std::move(window)),
             m_device(std::move(device)),
@@ -79,7 +82,8 @@ export namespace vht {
             m_command_pool(std::move(command_pool)),
             m_input_assembly(std::move(input_assembly)),
             m_uniform_buffer(std::move(uniform_buffer)),
-            m_descriptor(std::move(descriptor)) {
+            m_descriptor(std::move(descriptor)),
+            m_query_pool(std::move(query_pool)) {
             init();
         }
 
@@ -134,6 +138,14 @@ export namespace vht {
             }
             // 更新飞行中的帧索引
             m_current_frame = (m_current_frame + 1) % MAX_FRAMES_IN_FLIGHT;
+
+            m_device->graphics_queue().waitIdle();
+            static int counter = 0;
+            if( ++counter % 2500 == 0 ){
+                m_query_pool->print_delta_time();
+                m_query_pool->print_statistics();
+                m_query_pool->print_occlusion();
+            }
         }
 
     private:
@@ -166,6 +178,22 @@ export namespace vht {
         // 记录命令缓冲区
         void record_command_buffer(const vk::raii::CommandBuffer& command_buffer, const uint32_t image_index) const {
             command_buffer.begin( vk::CommandBufferBeginInfo{} );
+            // 遮挡查询
+            command_buffer.resetQueryPool( m_query_pool->occlusion(), 0, 1 );
+            command_buffer.beginQuery(m_query_pool->occlusion(), 0);
+            // 管线统计查询
+            command_buffer.resetQueryPool( m_query_pool->statistics(), 0, 1 );
+            command_buffer.beginQuery(m_query_pool->statistics(), 0);
+            // 时间戳查询
+            // 重置查询池，索引 0 和 1
+            command_buffer.resetQueryPool( m_query_pool->timestamp(), 0, 2 );
+            command_buffer.writeTimestamp(
+                vk::PipelineStageFlagBits::eTopOfPipe, // 在管线顶部写入时间戳
+                m_query_pool->timestamp(), // 查询池
+                0   // 查询池内部的查询索引
+            );
+
+
 
             vk::RenderPassBeginInfo render_pass_begin_info;
             render_pass_begin_info.renderPass = m_render_pass->render_pass();
@@ -211,6 +239,13 @@ export namespace vht {
             command_buffer.drawIndexed(static_cast<uint32_t>(m_data_loader->indices().size()), 1, 0, 0, 0);
 
             command_buffer.endRenderPass();
+
+            command_buffer.writeTimestamp(
+                vk::PipelineStageFlagBits::eBottomOfPipe,
+                m_query_pool->timestamp(), 1 // 结束时间戳，索引1
+            );
+            command_buffer.endQuery(m_query_pool->statistics(), 0);
+            command_buffer.endQuery(m_query_pool->occlusion(), 0);
             command_buffer.end();
         }
     };
