2017-06-26 1 views
0

私はogldev's vulkan tutorialsを実行しています。この問題は、特にvkGetPhysicalDeviceSurfaceFormatsKHRという関数で実行されています。ドキュメンテーションによると、pSurfaceFormats引数がNULLの場合、pSurfaceFormatCountポインタで実際に使用できるサーフェスフォーマットの数がわかります。Vulkan:vkGetPhysicalDeviceSurfaceFormatsKHRフォーマットがありません?

ここに私の問題が入ります。整数ポインタには全く触れません。

uint NumFormats = 0; 
    res = vkGetPhysicalDeviceSurfaceFormatsKHR(PhysDev, Surface, &NumFormats, NULL); 
    if(res != VK_SUCCESS) { 
     LIFE_ERROR("vkGetPhysicalDeviceSurfaceFormatsKHR error: %d\n", res); 
     assert(0); 
    } 
    assert(NumFormats > 0); 

アサート(NumFormats> 0)が失敗した)私は、NVIDIAドライバでLinuxを実行している、と私は私の出力がこれですので、VULKAN APIは、正しく私のGPUを見ることができることをかなり確信している:

Found 6 extensions 
Instance extension 0 - VK_KHR_surface 
Instance extension 1 - VK_KHR_xcb_surface 
Instance extension 2 - VK_KHR_xlib_surface 
Instance extension 3 - VK_KHR_wayland_surface 
Instance extension 4 - VK_EXT_debug_report 
Instance extension 5 - VK_NV_external_memory_capabilities 
Surface created 
Num physical devices 1 
Device name: GTX 980 Ti 
    API version: 1.0.24 
    Num of family queues: 2 
....(assert failes) 
+0

コードが正しいと思われるので、サーフェスに問題があると思われます。どのプラットフォームのサーフェスエクステンション(xcb、xlib、wayland)を使用していますか?そのエクステンションを有効にしましたか?ネイティブウィンドウとサーフェスの作成が成功しましたか?検証レイヤが有効になっていますか? –

+0

@JesseHall私はxcbとbase vulkanを使っているだけなので、検証レイヤはありません。 – Sillydan

答えて

0

問題を解決しました。私はthis answerを見て、どのようなサーフェスフォーマットと機能が利用可能かをチェックしようとする前に、自分のxcbウィンドウを初期化するのを忘れていたことを理解しました。

関連する問題