前提・実現したいこと
タイトルの通りです. いくつかほかのPCでも試しましたが, 動作しなかったので私のやり方が間違っているみたいなので, 正しい方法を教えていただけると嬉しいです. ドキュメントは読み, サンプルも漁りましたが見つかりませんでした.
失敗した実装方法
初めにVulkanのインスタンスを作成. この際有効化したextensionsは, VK_KHR_SURFACE_EXTENSION_NAME
, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
, VK_KHR_WIN32_SURFACE_EXTENSION_NAME
, VK_EXT_DEBUG_UTILS_EXTENSION_NAME
, layersは, VK_LAYER_KHRONOS_validation
. 構造体のpNextはVkDebugUtilsMessengerCreateInfoEXT
のみです.
続いて, ウィンドウサーフェスをvkCreateWin32SurfaceKHR
関数を用いて作成. この際構造体のpNextはありません.
次に, 物理デバイスを選択します. グラフィックとプレゼントのキューをサポートしているものを選んだあと, VkGetPhysicalDeviceSurfaceCapabilities2KHRでフルスクリーンの対応情報を調べています. 具体的には, 関数に渡す構造体のpNextチェーンにVkSurfaceFullScreenExclusiveWin32InfoEXT
-> VkSurfaceFullScreenExclusiveInfoEXT
の順番で格納しました. 前者にはMonitorFromWindow(WindowsArgs.hWnd, MONITOR_DEFAULTTOPRIMARY)
を, 後者にはVK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
を渡しました. 関数で変更される構造体のpNextにはVkSurfaceCapabilitiesFullScreenExclusiveEXT
を設定しました. このとき確かにfullScreenExclusiveSupported
はVK_TRUE
となっていたので, 対応しているはずです.
その後, デバイスを作成します. 有効化したextensionsは, VK_KHR_SWAPCHAIN_EXTENSION_NAME
と, VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME
です. 構造体のpNextには何も設定していません.
最後にスワップチェーンを設定します. 構造体のpNextには先ほど用いたVkSurfaceFullScreenExclusiveWin32InfoEXT
を再び渡しています.
これでvkAcquireFullScreenExclusiveModeEXT
を呼び出したのですが, フルスクリーンになりませんでした.
補足情報(FW/ツールのバージョンなど)
VulkanSDK: 1.2.176.1
GPU: NVIDIA GeForce GTX 1660 SUPER
Driver: GeForce 471.68
OS: Windows10 Home / OS Build: 19042.1165
###コードについて
teratailの文字数制限に達したので, GoogleDocsを作成しました.
こちらのリンクより閲覧&コメントできます.
##最後に
最後まで読んでくださって本当にありがとうございます!
あなたの回答
tips
プレビュー