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

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

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

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

C++

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

受付中

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

Hydr0StarForest
Hydr0StarForest

総合スコア0

Vulkan

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

C++

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

0回答

0リアクション

0クリップ

599閲覧

投稿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を作成しました.
こちらのリンクより閲覧&コメントできます.

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

bboydaisuke

2021/08/30 14:29

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

2021/08/31 02:15

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

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Vulkan

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

C++

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