Added option for passing additional vertex/index buffer memory usage flags for loading models

Removed unused optional assimp flags
This commit is contained in:
Sascha Willems 2019-04-23 08:15:23 +02:00
parent a1b21f6990
commit 00982b70bb

View file

@ -86,8 +86,9 @@ namespace vks
glm::vec3 center; glm::vec3 center;
glm::vec3 scale; glm::vec3 scale;
glm::vec2 uvscale; glm::vec2 uvscale;
VkMemoryPropertyFlags memoryPropertyFlags = 0;
ModelCreateInfo() {}; ModelCreateInfo() : center(glm::vec3(0.0f)), scale(glm::vec3(1.0f)), uvscale(glm::vec2(1.0f)) {};
ModelCreateInfo(glm::vec3 scale, glm::vec2 uvscale, glm::vec3 center) ModelCreateInfo(glm::vec3 scale, glm::vec2 uvscale, glm::vec3 center)
{ {
@ -151,9 +152,8 @@ namespace vks
* @param layout Vertex layout components (position, normals, tangents, etc.) * @param layout Vertex layout components (position, normals, tangents, etc.)
* @param createInfo MeshCreateInfo structure for load time settings like scale, center, etc. * @param createInfo MeshCreateInfo structure for load time settings like scale, center, etc.
* @param copyQueue Queue used for the memory staging copy commands (must support transfer) * @param copyQueue Queue used for the memory staging copy commands (must support transfer)
* @param (Optional) flags ASSIMP model loading flags
*/ */
bool loadFromFile(const std::string& filename, vks::VertexLayout layout, vks::ModelCreateInfo *createInfo, vks::VulkanDevice *device, VkQueue copyQueue, const int flags = defaultFlags) bool loadFromFile(const std::string& filename, vks::VertexLayout layout, vks::ModelCreateInfo *createInfo, vks::VulkanDevice *device, VkQueue copyQueue)
{ {
this->device = device->logicalDevice; this->device = device->logicalDevice;
@ -179,11 +179,11 @@ namespace vks
AAsset_read(asset, meshData, size); AAsset_read(asset, meshData, size);
AAsset_close(asset); AAsset_close(asset);
pScene = Importer.ReadFileFromMemory(meshData, size, flags); pScene = Importer.ReadFileFromMemory(meshData, size, defaultFlags);
free(meshData); free(meshData);
#else #else
pScene = Importer.ReadFile(filename.c_str(), flags); pScene = Importer.ReadFile(filename.c_str(), defaultFlags);
if (!pScene) { if (!pScene) {
std::string error = Importer.GetErrorString(); std::string error = Importer.GetErrorString();
vks::tools::exitFatal(error + "\n\nThe file may be part of the additional asset pack.\n\nRun \"download_assets.py\" in the repository root to download the latest version.", -1); vks::tools::exitFatal(error + "\n\nThe file may be part of the additional asset pack.\n\nRun \"download_assets.py\" in the repository root to download the latest version.", -1);
@ -334,14 +334,14 @@ namespace vks
// Create device local target buffers // Create device local target buffers
// Vertex buffer // Vertex buffer
VK_CHECK_RESULT(device->createBuffer( VK_CHECK_RESULT(device->createBuffer(
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | createInfo->memoryPropertyFlags,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
&vertices, &vertices,
vBufferSize)); vBufferSize));
// Index buffer // Index buffer
VK_CHECK_RESULT(device->createBuffer( VK_CHECK_RESULT(device->createBuffer(
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | createInfo->memoryPropertyFlags,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
&indices, &indices,
iBufferSize)); iBufferSize));
@ -385,12 +385,11 @@ namespace vks
* @param layout Vertex layout components (position, normals, tangents, etc.) * @param layout Vertex layout components (position, normals, tangents, etc.)
* @param scale Load time scene scale * @param scale Load time scene scale
* @param copyQueue Queue used for the memory staging copy commands (must support transfer) * @param copyQueue Queue used for the memory staging copy commands (must support transfer)
* @param (Optional) flags ASSIMP model loading flags
*/ */
bool loadFromFile(const std::string& filename, vks::VertexLayout layout, float scale, vks::VulkanDevice *device, VkQueue copyQueue, const int flags = defaultFlags) bool loadFromFile(const std::string& filename, vks::VertexLayout layout, float scale, vks::VulkanDevice *device, VkQueue copyQueue)
{ {
vks::ModelCreateInfo modelCreateInfo(scale, 1.0f, 0.0f); vks::ModelCreateInfo modelCreateInfo(scale, 1.0f, 0.0f);
return loadFromFile(filename, layout, &modelCreateInfo, device, copyQueue, flags); return loadFromFile(filename, layout, &modelCreateInfo, device, copyQueue);
} }
}; };
}; };