asdf
This commit is contained in:
@@ -28,6 +28,8 @@ add_sample_with_tags(
|
|||||||
SHADER_FILES_GLSL
|
SHADER_FILES_GLSL
|
||||||
"texture_loading/glsl/texture.vert"
|
"texture_loading/glsl/texture.vert"
|
||||||
"texture_loading/glsl/texture.frag"
|
"texture_loading/glsl/texture.frag"
|
||||||
|
"texture_loading/glsl/bg.vert"
|
||||||
|
"texture_loading/glsl/bg.frag"
|
||||||
SHADER_FILES_HLSL
|
SHADER_FILES_HLSL
|
||||||
"texture_loading/hlsl/texture.vert.hlsl"
|
"texture_loading/hlsl/texture.vert.hlsl"
|
||||||
"texture_loading/hlsl/texture.frag.hlsl")
|
"texture_loading/hlsl/texture.frag.hlsl")
|
||||||
@@ -67,6 +67,7 @@ void TextureLoading::build_command_buffers()
|
|||||||
VkClearValue clear_values[2];
|
VkClearValue clear_values[2];
|
||||||
clear_values[0].color = default_clear_color;
|
clear_values[0].color = default_clear_color;
|
||||||
clear_values[1].depthStencil = { 1.0f, 0 }; // 使用 1.0f 作为深度清除值
|
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();
|
VkRenderPassBeginInfo render_pass_begin_info = vkb::initializers::render_pass_begin_info();
|
||||||
render_pass_begin_info.renderPass = render_pass;
|
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) {
|
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);
|
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)
|
// 绘制一个三角形 strip,覆盖整个屏幕 (NDC -1 to 1)
|
||||||
// 顶点顺序: (-1,-1), (1,-1), (-1,1), (1,1)
|
// 顶点顺序: (-1,-1), (1,-1), (-1,1), (1,1)
|
||||||
vkCmdDraw(draw_cmd_buffers[i], 4, 1, 0, 0); // 4 个顶点, 1 个实例, 从索引 0 开始
|
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(
|
vkb::initializers::pipeline_depth_stencil_state_create_info(
|
||||||
VK_TRUE, // depthTestEnable
|
VK_TRUE, // depthTestEnable
|
||||||
VK_TRUE, // depthWriteEnable
|
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 =
|
VkPipelineViewportStateCreateInfo viewport_state =
|
||||||
vkb::initializers::pipeline_viewport_state_create_info(1, 1, 0);
|
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(
|
vkb::initializers::pipeline_depth_stencil_state_create_info(
|
||||||
VK_TRUE, // depthTestEnable - 启用深度测试
|
VK_TRUE, // depthTestEnable - 启用深度测试
|
||||||
VK_FALSE, // depthWriteEnable - 禁用深度写入,让前景物体能正确遮挡背景
|
VK_FALSE, // depthWriteEnable - 禁用深度写入,让前景物体能正确遮挡背景
|
||||||
VK_COMPARE_OP_LESS); // 比较操作:如果片段的深度小于深度缓冲区中的值,则通过。
|
VK_COMPARE_OP_ALWAYS); //VK_COMPARE_OP_LESS); // 比较操作:如果片段的深度小于深度缓冲区中的值,则通过。
|
||||||
// 结合清除深度为 1.0 和前景使用 GREATER,这应该可以正确工作。
|
// 结合清除深度为 1.0 和前景使用 GREATER,这应该可以正确工作。
|
||||||
// 或者使用 VK_COMPARE_OP_ALWAYS 来强制绘制背景,忽略深度。
|
// 或者使用 VK_COMPARE_OP_ALWAYS 来强制绘制背景,忽略深度。
|
||||||
|
|
||||||
@@ -594,6 +596,10 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options)
|
|||||||
std::cout << "Data size: " << dataSize << " bytes" << std::endl;
|
std::cout << "Data size: " << dataSize << " bytes" << std::endl;
|
||||||
processWithVulkan(testImage.data(), width, height, 1, rowStride, dataSize, texture);
|
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();
|
generate_quad();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user