質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Vulkan

Vulkanは、業界団体クロノスグループが規格化したグラフィックスAPI。主にゲームエンジンやゲームアプリケーション向けのグラフィックに最適化されており、ローレベル(low level)APIです。3Dオブジェクトを用いたアニメーションを使用するゲームで性能を最大限に発揮します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

970閲覧

VK_EXT_full_screen_exclusiveを用いた, フルスクリーンの切り替えをしたい

Hydr0StarForest

総合スコア0

Vulkan

Vulkanは、業界団体クロノスグループが規格化したグラフィックスAPI。主にゲームエンジンやゲームアプリケーション向けのグラフィックに最適化されており、ローレベル(low level)APIです。3Dオブジェクトを用いたアニメーションを使用するゲームで性能を最大限に発揮します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2021/08/30 11:54

編集2021/08/31 02:43

前提・実現したいこと

タイトルの通りです. いくつかほかの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を設定しました. このとき確かにfullScreenExclusiveSupportedVK_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を作成しました.
こちらのリンクより閲覧&コメントできます.

##最後に
最後まで読んでくださって本当にありがとうございます!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bboydaisuke

2021/08/30 14:29

この文章を作ることに時間を割くくらいなら、やりたい事を実行しようとしている最低限の、コピペするだけでとりあえず実行はできるコードを書く方がずっとずっと有意義だと思うんですよね。
Hydr0StarForest

2021/08/31 02:15

800行ほどございますが, 読んでいただけるということですね! 追記させていただきます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問