Код: Выделить всё
./PhysicsEngine -r
zsh: segmentation fault ./PhysicsEngine -r
[*] Неисправность сегментации возникает конкретно:
< /li>
стек вызовов: < /p>
[Unknown/Just-In-Time compiled code] (Unknown Source:0)
PhysicsEngine!App::CreateSwapchain() (/Users/tibecornelis/Documents/Programming/PhysicsEngine/Main/Source/App.cpp:157)
PhysicsEngine!App::InitVulkan() (/Users/tibecornelis/Documents/Programming/PhysicsEngine/Main/Source/App.cpp:409)
PhysicsEngine!App::run() (/Users/tibecornelis/Documents/Programming/PhysicsEngine/Main/Source/App.cpp:19)
PhysicsEngine!RunApp() (/Users/tibecornelis/Documents/Programming/PhysicsEngine/Main/Source/App.cpp:531)
PhysicsEngine!main (/Users/tibecornelis/Documents/Programming/PhysicsEngine/Main/Source/main.cpp:104)
start (Unknown Source:0)
< /code>
< /li>
Системные характеристики: < /p>
macos : m3 macbook pro
[*] osx : sonoma версия 14.6.1
< /ul>
< /li>
< /ul>
Дополнительная информация < /strong> < /h3>
[*] Тест Vulkan Triangle из исходного кода успешно работает, указывая на то, что сам Vulkan правильно установлен и функциональный. < /li>
< /ul>
соответствующие фрагменты кода [/b]
Функция создания Swapchain
void App::CreateSwapchain(){
SwapchainSupportDetails mySwapchainSupportDetails = QuerySwapChainSupport(P_GPU);
VkSurfaceFormatKHR mySurfaceFormat = ChooseSwapchainSurfaceFormat(mySwapchainSupportDetails.surfaceFormats);
VkPresentModeKHR myPresentMode = ChooseSwapchainPresentMode(mySwapchainSupportDetails.presentModes);
VkExtent2D myExtent = ChooseSwapchainExtent(mySwapchainSupportDetails.surfaceCapabilities);
uint32_t MinimumImageCount = mySwapchainSupportDetails.surfaceCapabilities.minImageCount + 1;
if (mySwapchainSupportDetails.surfaceCapabilities.maxImageCount > 0 &&
MinimumImageCount > mySwapchainSupportDetails.surfaceCapabilities.maxImageCount)
{
MinimumImageCount = mySwapchainSupportDetails.surfaceCapabilities.maxImageCount;
}
VkSwapchainCreateInfoKHR CreateInfo{};
CreateInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
CreateInfo.surface = P_Surface;
CreateInfo.minImageCount = MinimumImageCount;
CreateInfo.imageFormat = mySurfaceFormat.format;
CreateInfo.imageColorSpace = mySurfaceFormat.colorSpace;
CreateInfo.imageExtent = myExtent;
CreateInfo.imageArrayLayers = 1;
CreateInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
QueueFamilyIndices myFamilyIndices = FindQueueFamilies(P_GPU);
uint32_t QueueFamilyIndices[] = {myFamilyIndices.graphicsFamily.value(), myFamilyIndices.presentFamily.value()};
if (myFamilyIndices.graphicsFamily != myFamilyIndices.presentFamily)
{
CreateInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT;
CreateInfo.queueFamilyIndexCount = 2;
CreateInfo.pQueueFamilyIndices = QueueFamilyIndices;
}
else
{
CreateInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
}
CreateInfo.preTransform = mySwapchainSupportDetails.surfaceCapabilities.currentTransform;
CreateInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
CreateInfo.presentMode = myPresentMode;
CreateInfo.clipped = VK_TRUE;
CreateInfo.oldSwapchain = VK_NULL_HANDLE;
if (vkCreateSwapchainKHR(P_LogicalDevice, &CreateInfo, nullptr, &P_Swapchain) != VK_SUCCESS)
{
throw std::runtime_error("Error : Failed to create swapchain");
}
}
< /code>
< /h3>
шаги по устранению неполадок >
проверенная инсталляция Vulkan: проверенная инсталляция Vulkan SDK и поддержка GLFW Vulkan
[*] проверенная поддержка Swapchain: используется QuerysWapchainSupport () [/code] для подтверждения моего графического процессора поддерживает требуемые свойства Swapchain.
< br/> [*] обеспечить действительное логическое устройство: vkcreatedevice () не возвращает ошибку и P_logicalDevice действителен перед вызовом vkcreateswapchainkhr () .
[*] Проверенное создание поверхности: GLFWCREATEWINDOWSURFACE () добивается успеха без ошибок.
Подробнее здесь: https://stackoverflow.com/questions/794 ... acbook-pro
Мобильная версия