Fix compile warning and crash in SSAO test.
emptyTexture was not initialized, so when destroying it the destroy Vulkan functions were called with bogus pointers.
This commit is contained in:
parent
0d732cc4a4
commit
5042f46388
2 changed files with 11 additions and 8 deletions
|
|
@ -53,10 +53,13 @@ void vkglTF::Texture::updateDescriptor()
|
||||||
|
|
||||||
void vkglTF::Texture::destroy()
|
void vkglTF::Texture::destroy()
|
||||||
{
|
{
|
||||||
vkDestroyImageView(device->logicalDevice, view, nullptr);
|
if (device)
|
||||||
vkDestroyImage(device->logicalDevice, image, nullptr);
|
{
|
||||||
vkFreeMemory(device->logicalDevice, deviceMemory, nullptr);
|
vkDestroyImageView(device->logicalDevice, view, nullptr);
|
||||||
vkDestroySampler(device->logicalDevice, sampler, nullptr);
|
vkDestroyImage(device->logicalDevice, image, nullptr);
|
||||||
|
vkFreeMemory(device->logicalDevice, deviceMemory, nullptr);
|
||||||
|
vkDestroySampler(device->logicalDevice, sampler, nullptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path, vks::VulkanDevice *device, VkQueue copyQueue)
|
void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path, vks::VulkanDevice *device, VkQueue copyQueue)
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ namespace vkglTF
|
||||||
|
|
||||||
extern VkDescriptorSetLayout descriptorSetLayoutImage;
|
extern VkDescriptorSetLayout descriptorSetLayoutImage;
|
||||||
extern VkDescriptorSetLayout descriptorSetLayoutUbo;
|
extern VkDescriptorSetLayout descriptorSetLayoutUbo;
|
||||||
extern VkMemoryPropertyFlags memoryPropertyFlags;
|
extern VkMemoryPropertyFlags memoryPropertyFlags;
|
||||||
extern uint32_t descriptorBindingFlags;
|
extern uint32_t descriptorBindingFlags;
|
||||||
|
|
||||||
struct Node;
|
struct Node;
|
||||||
|
|
@ -53,7 +53,7 @@ namespace vkglTF
|
||||||
glTF texture loading class
|
glTF texture loading class
|
||||||
*/
|
*/
|
||||||
struct Texture {
|
struct Texture {
|
||||||
vks::VulkanDevice* device;
|
vks::VulkanDevice* device = nullptr;
|
||||||
VkImage image;
|
VkImage image;
|
||||||
VkImageLayout imageLayout;
|
VkImageLayout imageLayout;
|
||||||
VkDeviceMemory deviceMemory;
|
VkDeviceMemory deviceMemory;
|
||||||
|
|
@ -72,7 +72,7 @@ namespace vkglTF
|
||||||
glTF material class
|
glTF material class
|
||||||
*/
|
*/
|
||||||
struct Material {
|
struct Material {
|
||||||
vks::VulkanDevice* device;
|
vks::VulkanDevice* device = nullptr;
|
||||||
enum AlphaMode { ALPHAMODE_OPAQUE, ALPHAMODE_MASK, ALPHAMODE_BLEND };
|
enum AlphaMode { ALPHAMODE_OPAQUE, ALPHAMODE_MASK, ALPHAMODE_BLEND };
|
||||||
AlphaMode alphaMode = ALPHAMODE_OPAQUE;
|
AlphaMode alphaMode = ALPHAMODE_OPAQUE;
|
||||||
float alphaCutoff = 1.0f;
|
float alphaCutoff = 1.0f;
|
||||||
|
|
@ -295,7 +295,7 @@ namespace vkglTF
|
||||||
void loadMaterials(tinygltf::Model& gltfModel);
|
void loadMaterials(tinygltf::Model& gltfModel);
|
||||||
void loadAnimations(tinygltf::Model& gltfModel);
|
void loadAnimations(tinygltf::Model& gltfModel);
|
||||||
void loadFromFile(std::string filename, vks::VulkanDevice* device, VkQueue transferQueue, uint32_t fileLoadingFlags = vkglTF::FileLoadingFlags::None, float scale = 1.0f);
|
void loadFromFile(std::string filename, vks::VulkanDevice* device, VkQueue transferQueue, uint32_t fileLoadingFlags = vkglTF::FileLoadingFlags::None, float scale = 1.0f);
|
||||||
void bindBuffers(VkCommandBuffer commandBuffer);
|
void bindBuffers(VkCommandBuffer commandBuffer);
|
||||||
void drawNode(Node* node, VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
|
void drawNode(Node* node, VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
|
||||||
void draw(VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
|
void draw(VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
|
||||||
void getNodeDimensions(Node* node, glm::vec3& min, glm::vec3& max);
|
void getNodeDimensions(Node* node, glm::vec3& min, glm::vec3& max);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue