正交投影完成

This commit is contained in:
xsl
2025-09-24 22:20:22 +08:00
parent a112cecfbf
commit acd9eea405
+11 -52
View File
@@ -592,6 +592,7 @@ void TextureLoading::draw()
std::unique_lock<std::mutex> lock_mvp(mtx_mvp);
ApiVulkanSample::prepare_frame();
// --- 新增:在命令缓冲区中绘制点云 ---
// 在 build_command_buffers 中已经构建了命令缓冲区,但点数据是动态的。
// 因此,我们在这里重新记录命令缓冲区。
@@ -869,16 +870,16 @@ void TextureLoading::setup_descriptor_set_layout_point_line()
// Binding 0 : Vertex shader uniform buffer
vkb::initializers::descriptor_set_layout_binding(
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT,
0),
// Binding 0 : Vertex shader uniform buffer
// Binding 1 : Vertex shader uniform buffer
vkb::initializers::descriptor_set_layout_binding(
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
1),
// Binding 1 : Fragment shader image sampler
// Binding 2 : Fragment shader image sampler
vkb::initializers::descriptor_set_layout_binding(
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
@@ -994,6 +995,11 @@ void TextureLoading::prepare_uniform_buffers_DashParameters()
void TextureLoading::update_uniform_buffers_DashParameters(float dashSize, float gapSize, float dashOffset, float uAASize, int useWorldSpace)
{
if (!prepared)
{
return;
}
std::unique_lock<std::mutex> lock(mtx_mvp);
_DashParameters.dashSize = dashSize;
_DashParameters.gapSize = gapSize;
_DashParameters.dashOffset = dashOffset;
@@ -1019,7 +1025,6 @@ void TextureLoading::update_uniform_buffers_point(float fov, float x, float y, f
{
return;
}
std::unique_lock<std::mutex> lock(mtx_mvp);
ubo_vs_point.projection = glm::perspective(glm::radians(fov), static_cast<float>(width) / static_cast<float>(height), 0.001f, 256.0f);
@@ -1472,8 +1477,6 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options)
//update_point_vertex_buffer(testPoint, sizeof(testPoint) / (3 * 4));
//update_point_vertex_buffer_line(testPoint_line, sizeof(testPoint_line) / (3 * 4), 1, 0, 0);
#ifdef _WIN32
std::ifstream file("face.json");
std::string content((std::istreambuf_iterator<char>(file)),std::istreambuf_iterator<char>());
@@ -1573,7 +1576,7 @@ void TextureLoadProcessWithVulkan(uint8_t* data, int width, int height, int rowS
TextureLoading::Get()->processWithVulkan(data, width, height, rowStride, dataSize, cam_tex);
}
void update_face_round_line_point(float* pos);
void ReceiveFacePoint(float* pos, int pointCount, int width, int height)
{
//for (int i = 0; i < pointCount; i++) {
@@ -1584,8 +1587,7 @@ void ReceiveFacePoint(float* pos, int pointCount, int width, int height)
TextureLoading* self = TextureLoading::Get();
if(self != nullptr)
{
//TextureLoading::Get()->update_point_vertex_buffer(pos, pointCount);
//update_face_round_line_point(pos);
TextureLoading::Get()->update_point_vertex_buffer(pos, pointCount);
self->demo1(pos);
}
@@ -2038,49 +2040,6 @@ void TextureLoading::demo1(float* pos)
update_point_vertex_buffer_line_save(vertices);
}
void update_face_round_line_point(float* pos)
{
point_index = 0;
float points[100 * 3];
add_point(pos, points, 152);
add_point(pos, points, 176);
add_point(pos, points, 150);
add_point(pos, points, 172);
add_point(pos, points, 58);
add_point(pos, points, 132);
add_point(pos, points, 234);
add_point(pos, points, 162);
add_point(pos, points, 21);
add_point(pos, points, 54);
add_point(pos, points, 103);
add_point(pos, points, 67);
add_point(pos, points, 109);
add_point(pos, points, 338);
add_point(pos, points, 297);
add_point(pos, points, 332);
add_point(pos, points, 284);
add_point(pos, points, 251);
add_point(pos, points, 389);
add_point(pos, points, 454);
add_point(pos, points, 323);
add_point(pos, points, 361);
add_point(pos, points, 435);
add_point(pos, points, 288);
add_point(pos, points, 397);
add_point(pos, points, 365);
add_point(pos, points, 379);
add_point(pos, points, 378);
add_point(pos, points, 400);
add_point(pos, points, 377);
add_point(pos, points, 152);
TextureLoading* self = TextureLoading::Get();
if (self != nullptr)
{
std::vector<LineVertex> vertices;
self->update_point_vertex_buffer_line(points, point_index, 0.9f, 0.9f, 0.9f, vertices);
self->update_point_vertex_buffer_line_save(vertices);
}
}
void TextureLoading::update_point_vertex_buffer_line(float* pos, int count, float r, float g, float b, std::vector<LineVertex>& vertices)
{