asdf
This commit is contained in:
@@ -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")
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user