基本的なVulkanアプリケーションを作成するときに問題が発生します。インスタンスを作成しようとすると、ppEnableExtensionNames経由で拡張機能をロードしようとすると失敗します。 ppEnableExtensionNames
がNULL
の場合、インスタンスの作成は成功します(しかし、私はそのようにサーフェイスを作成できないため、かなりの点があります)。拡張子をロードするときにVulkan - インスタンスの作成が失敗する
私は別のチュートリアルで二重チェックして、間違いを見つけることができませんでした。 SDKをインストールし、vulkan-1.dllをチェックし、キューブデモを正常に実行しました。さらに私は利用可能な拡張機能を列挙し、ロードしようとしたすべての拡張機能がリストされていたので、私のデバイスは基本的にそれらをサポートする必要があります。
Heres私のコードは、にppEnableExtensionNames != NULL
という長さで改行しています。 EDIT:この問題を解決したにもかかわらず、誰かが同じ愚かな間違いを犯した場合に備えて、コードを実際の問題の原因に変更しました。
#define VK_USE_PLATFORM_WIN32_KHR
//STD
#include <Windows.h>
#include <iostream>
#include <string>
#include <vector>
//NON-STD Libraries
#include "vulkan\vulkan.h"
//==================
//Window Reference
//==================
WNDCLASSEX window;
MSG msg;
HWND hwnd;
HDC hdc;
//===================
//SETUP VULKAN
//===================
//Global VK Variables
VkInstance instance;
VkPhysicalDevice physDevice;
VkApplicationInfo appInfo = {};
VkInstanceCreateInfo instanceInfo = {};
void loadExtensions{
std::vector<const char *> enabledExtensions;
enabledExtensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
enabledExtensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
instanceInfo.enabledExtensionCount = enabledExtensions.size();
instanceInfo.ppEnabledExtensionNames = &enabledExtensions[0];
}
//==================
//WinMain, Entry Point
//==================
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int nshowcmd) {
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pNext = NULL;
appInfo.pApplicationName = "Monody";
appInfo.applicationVersion = VK_MAKE_VERSION(0, 0, 0);
appInfo.pEngineName = "Monody Engine";
appInfo.engineVersion = VK_MAKE_VERSION(0, 0, 0);
appInfo.apiVersion = VK_API_VERSION_1_0;
instanceInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
instanceInfo.pNext = NULL;
instanceInfo.flags = 0;
instanceInfo.pApplicationInfo = &appInfo;
instanceInfo.enabledLayerCount = 0;
instanceInfo.ppEnabledLayerNames = NULL;
instanceInfo.enabledExtensionCount = 0;
instanceInfo.ppEnabledExtensionNames = NULL;
loadExtensions();
//Create Instance
VkResult error = vkCreateInstance(&instanceInfo, nullptr, &instance);
return 0;
}
この正確なことは私に起こった。私は何が起こっていたのか理解するために少し私を取った。 – Zebrafish