我正在尝试使用单通道从 576x112 纹理创建图像数组。 我尝试每层创建 48x112,因此 arrayLevel 设置为 12.
我尝试了不同的bufferRowLength,最终图像变得更丑陋,而bufferImageHeight不影响最终结果
vk::BufferImageCopy buffer_image_copies[12] = {};
for (u32 i = 0; i < 12; ++i) {
// Copy only the first layer of the texture
buffer_image_copies[i].bufferOffset = 0;
buffer_image_copies[i].bufferRowLength = 48;
buffer_image_copies[i].bufferImageHeight = 112;
buffer_image_copies[i].imageSubresource.aspectMask = vk::ImageAspectFlagBits::eColor;
buffer_image_copies[i].imageSubresource.mipLevel = 0;
buffer_image_copies[i].imageSubresource.baseArrayLayer = i;
buffer_image_copies[i].imageSubresource.layerCount = 1;
buffer_image_copies[i].imageOffset = vk::Offset3D(0, 0, 0);
buffer_image_copies[i].imageExtent = vk::Extent3D(48, height, 1);
}
command_buffer.copyBufferToImage(staging_buffer, car_volume_texture.image, vk::ImageLayout::eTransferDstOptimal, 12, buffer_image_copies);