清理
最后,不要忘记在createTextureImage函数的结尾清除我们使用的暂存缓冲和它关联的内存:
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
vkDestroyBuffer(device, stagingBuffer, nullptr);
vkFreeMemory(device, stagingBufferMemory, nullptr);
}
纹理图像一直被使用到程序结束才被我们清除:
void cleanup() {
cleanupSwapChain();
vkDestroyImage(device, textureImage, nullptr);
vkFreeMemory(device, textureImageMemory, nullptr);
...
}
图像数据被加载到图像对象后,还需要一定的设置才能被访问。下一章节,我们会介绍访问我们加载的图像数据的方法。
本章节代码:
C++:
https://vulkan-tutorial.com/code/23_texture_image.cpp
Vertex Shader:
https://vulkan-tutorial.com/code/21_shader_ubo.vert
Fragment Shader: