From ac43d3b0aa942cfdb76a274b0dd8ae473f862899 Mon Sep 17 00:00:00 2001 From: xiangsilian Date: Mon, 15 Sep 2025 22:32:11 +0800 Subject: [PATCH] asdf --- samples/api/texture_loading/CMakeLists.txt | 2 ++ samples/api/texture_loading/texture_loading.cpp | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/samples/api/texture_loading/CMakeLists.txt b/samples/api/texture_loading/CMakeLists.txt index 3ac1d5e..3f225e5 100644 --- a/samples/api/texture_loading/CMakeLists.txt +++ b/samples/api/texture_loading/CMakeLists.txt @@ -28,6 +28,8 @@ add_sample_with_tags( SHADER_FILES_GLSL "texture_loading/glsl/texture.vert" "texture_loading/glsl/texture.frag" + "texture_loading/glsl/bg.vert" + "texture_loading/glsl/bg.frag" SHADER_FILES_HLSL "texture_loading/hlsl/texture.vert.hlsl" "texture_loading/hlsl/texture.frag.hlsl") \ No newline at end of file diff --git a/samples/api/texture_loading/texture_loading.cpp b/samples/api/texture_loading/texture_loading.cpp index 1c4c2e2..804d26e 100644 --- a/samples/api/texture_loading/texture_loading.cpp +++ b/samples/api/texture_loading/texture_loading.cpp @@ -67,6 +67,7 @@ void TextureLoading::build_command_buffers() VkClearValue clear_values[2]; clear_values[0].color = default_clear_color; clear_values[1].depthStencil = { 1.0f, 0 }; // 使用 1.0f 作为深度清除值 + //clear_values[1].depthStencil = { 0, 0 }; // 使用 1.0f 作为深度清除值 VkRenderPassBeginInfo render_pass_begin_info = vkb::initializers::render_pass_begin_info(); render_pass_begin_info.renderPass = render_pass; @@ -95,7 +96,7 @@ void TextureLoading::build_command_buffers() // --- 绘制全屏背景 --- if (cam_text.image != VK_NULL_HANDLE && cam_text.view != VK_NULL_HANDLE && cam_text.sampler != VK_NULL_HANDLE) { vkCmdBindPipeline(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.background); - vkCmdBindDescriptorSets(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_bg, 0, 1, &descriptor_set_bg, 0, NULL); + //vkCmdBindDescriptorSets(draw_cmd_buffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_bg, 0, 1, &descriptor_set_bg, 0, NULL); // 绘制一个三角形 strip,覆盖整个屏幕 (NDC -1 to 1) // 顶点顺序: (-1,-1), (1,-1), (-1,1), (1,1) vkCmdDraw(draw_cmd_buffers[i], 4, 1, 0, 0); // 4 个顶点, 1 个实例, 从索引 0 开始 @@ -396,7 +397,8 @@ void TextureLoading::prepare_pipelines() vkb::initializers::pipeline_depth_stencil_state_create_info( VK_TRUE, // depthTestEnable VK_TRUE, // depthWriteEnable - VK_COMPARE_OP_GREATER); // Reversed depth buffer + VK_COMPARE_OP_ALWAYS); // VK_COMPARE_OP_LESS); + //VK_COMPARE_OP_GREATER); // Reversed depth buffer VkPipelineViewportStateCreateInfo viewport_state = vkb::initializers::pipeline_viewport_state_create_info(1, 1, 0); @@ -490,7 +492,7 @@ void TextureLoading::prepare_pipeline_bg() vkb::initializers::pipeline_depth_stencil_state_create_info( VK_TRUE, // depthTestEnable - 启用深度测试 VK_FALSE, // depthWriteEnable - 禁用深度写入,让前景物体能正确遮挡背景 - VK_COMPARE_OP_LESS); // 比较操作:如果片段的深度小于深度缓冲区中的值,则通过。 + VK_COMPARE_OP_ALWAYS); //VK_COMPARE_OP_LESS); // 比较操作:如果片段的深度小于深度缓冲区中的值,则通过。 // 结合清除深度为 1.0 和前景使用 GREATER,这应该可以正确工作。 // 或者使用 VK_COMPARE_OP_ALWAYS 来强制绘制背景,忽略深度。 @@ -594,6 +596,10 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options) std::cout << "Data size: " << dataSize << " bytes" << std::endl; processWithVulkan(testImage.data(), width, height, 1, rowStride, dataSize, texture); + auto bgImage = generateSimpleTestImage(width, height, &rowStride); + dataSize = bgImage.size(); + processWithVulkan(bgImage.data(), width, height, 1, rowStride, dataSize, cam_text); + // --- 生成前景几何体 --- generate_quad();