diff --git a/samples/api/texture_loading/texture_loading.cpp b/samples/api/texture_loading/texture_loading.cpp index f521bfa..19cac48 100644 --- a/samples/api/texture_loading/texture_loading.cpp +++ b/samples/api/texture_loading/texture_loading.cpp @@ -573,7 +573,7 @@ void TextureLoading::build_command_buffers() //vkCmdDrawIndexed(draw_cmd_buffers[i], index_count, 1, 0, 0, 0); - //draw_point_cloud(draw_cmd_buffers[i]); + draw_point_cloud(draw_cmd_buffers[i]); draw_point_cloud_line(draw_cmd_buffers[i]); //draw_ui(draw_cmd_buffers[i]); @@ -1495,7 +1495,7 @@ bool TextureLoading::prepare(const vkb::ApplicationOptions& options) prepared = true; - update_uniform_buffers_point(50, -0.5, -0.5, 0, 1, 1, 1, 0, 0, 0, 0, 0, -1); + update_uniform_buffers_point(47, -0.5, -0.51, 0, 1, 1, 1, 0, 0, 0, 0, 0, -1); //start(); return true; } @@ -1619,7 +1619,7 @@ void TextureLoading::createTexture(VkDevice device, VkPhysicalDevice physicalDev VkImageCreateInfo imageInfo = {}; imageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; imageInfo.imageType = VK_IMAGE_TYPE_2D; - imageInfo.format = VK_FORMAT_R8G8B8A8_SRGB; //VK_FORMAT_R8G8B8A8_UNORM; + imageInfo.format = VK_FORMAT_R8G8B8A8_UNORM;// VK_FORMAT_R8G8B8A8_SRGB; //VK_FORMAT_R8G8B8A8_UNORM; imageInfo.extent.width = width; imageInfo.extent.height = height; imageInfo.extent.depth = 1; @@ -1656,7 +1656,7 @@ void TextureLoading::createTexture(VkDevice device, VkPhysicalDevice physicalDev viewInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; viewInfo.image = texture.image; viewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - viewInfo.format = VK_FORMAT_R8G8B8A8_SRGB; // VK_FORMAT_R8G8B8A8_UNORM; + viewInfo.format = VK_FORMAT_R8G8B8A8_UNORM;// VK_FORMAT_R8G8B8A8_SRGB; // VK_FORMAT_R8G8B8A8_UNORM; viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; viewInfo.subresourceRange.baseMipLevel = 0; viewInfo.subresourceRange.levelCount = 1; @@ -2007,7 +2007,35 @@ void TextureLoading::demo1(float* pos) { add_point(pos, points, pointIndex[i]); } - update_point_vertex_buffer_line(points, point_index, 0.9f, 0.9f, 0.9f); + std::vector vertices; + update_point_vertex_buffer_line(points, point_index, 0.9f, 0.9f, 0.9f, vertices); + + point_index = 0; + add_point(pos, points, 9); + add_point(pos, points, 168); + update_point_vertex_buffer_line(points, point_index, 1, 0, 0, vertices); + + point_index = 0; + add_point(pos, points, 9); + add_point(pos, points, 104); + update_point_vertex_buffer_line(points, point_index, 1, 0, 0, vertices); + + point_index = 0; + add_point(pos, points, 9); + add_point(pos, points, 108); + update_point_vertex_buffer_line(points, point_index, 1, 0, 0, vertices); + + point_index = 0; + add_point(pos, points, 9); + add_point(pos, points, 337); + update_point_vertex_buffer_line(points, point_index, 1, 0, 0, vertices); + + point_index = 0; + add_point(pos, points, 9); + add_point(pos, points, 333); + update_point_vertex_buffer_line(points, point_index, 1, 0, 0, vertices); + + update_point_vertex_buffer_line_save(vertices); } void update_face_round_line_point(float* pos) @@ -2048,11 +2076,13 @@ void update_face_round_line_point(float* pos) TextureLoading* self = TextureLoading::Get(); if (self != nullptr) { - self->update_point_vertex_buffer_line(points, point_index, 0.9f, 0.9f, 0.9f); + std::vector 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) +void TextureLoading::update_point_vertex_buffer_line(float* pos, int count, float r, float g, float b, std::vector& vertices) { std::lock_guard lock(mtx_point_line); if (count <= 0) { @@ -2063,8 +2093,6 @@ void TextureLoading::update_point_vertex_buffer_line(float* pos, int count, floa glm::vec3 color = { r,g,b }; - // 1. 准备顶点数据 - std::vector vertices; for (int i = 0; i < count - 1; ++i) { @@ -2089,6 +2117,11 @@ void TextureLoading::update_point_vertex_buffer_line(float* pos, int count, floa }); } + +} + +void TextureLoading::update_point_vertex_buffer_line_save(std::vector& vertices) +{ point_count_line = vertices.size(); // 2. 更新或创建顶点缓冲区 diff --git a/samples/api/texture_loading/texture_loading.h b/samples/api/texture_loading/texture_loading.h index bf930b7..8f5bf5b 100644 --- a/samples/api/texture_loading/texture_loading.h +++ b/samples/api/texture_loading/texture_loading.h @@ -199,7 +199,8 @@ public: public: void update_point_vertex_buffer(float* pos, int pointCount); - void update_point_vertex_buffer_line(float* pos, int pointCount_line, float r, float g, float b); + void update_point_vertex_buffer_line(float* pos, int pointCount_line, float r, float g, float b, std::vector& vertices); + void update_point_vertex_buffer_line_save(std::vector& vertices); private: std::thread workerThread; bool running = false;