Создание информации подавляет создание экземпляровC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Создание информации подавляет создание экземпляров

Сообщение Гость »

После того, как я решил включить расширение VK_KHR_SWAPCHAIN_EXTENSION_NAME, у меня начала выдавать ошибку «нарушение прав доступа при чтении по адресу 0xFFFFFFFFFFFFFFFF». в строке выполнения vkCreateInstance.
После отладки я заметил, что проблема заключалась в заполнении значения ppEnabledExtensionNames структуры VkInstanceCreateInfo. Я решил обернуть расширения glfw вектором и использовать его для заполнения структуры.
Вот код функции для заполнения этой структуры.

Код: Выделить всё

VkInstanceCreateInfo VulkanManager::paste_create_info(VkApplicationInfo* app_info)
{
VkInstanceCreateInfo create_info{};
vector device_extensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
};
uint32_t glfw_extensions_count = 0;
const char** glfw_extensions;

create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
create_info.pApplicationInfo = app_info;

glfw_extensions = glfwGetRequiredInstanceExtensions(&glfw_extensions_count);

for (int i = 0; i < glfw_extensions_count; i++)
device_extensions.push_back(glfw_extensions[i]);

create_info.enabledExtensionCount = (uint32_t) device_extensions.size();
create_info.ppEnabledExtensionNames = device_extensions.data();

create_info.enabledLayerCount = 0;

return create_info;
}
Код заполнения структуры VkApplicationInfo:

Код: Выделить всё

{
VkApplicationInfo app_info{};

app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
app_info.pApplicationName = "Triangle";
app_info.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
app_info.pEngineName = "No Engine";
app_info.engineVersion = VK_MAKE_VERSION(1, 0, 0);
app_info.apiVersion = VK_API_VERSION_1_0;

return app_info;
}
И код создания экземпляра вулкана:

Код: Выделить всё

void VulkanManager::create_vulkan()
{
VkApplicationInfo app_info = VulkanManager::paste_app_info();
VkInstanceCreateInfo create_info = VulkanManager::paste_create_info(&app_info);
Скорее всего, это ошибка, связанная с указателями; указатели могут потерять свое значение при передаче в вектор

Подробнее здесь: https://stackoverflow.com/questions/781 ... instancing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»