雷撃の記憶

非常に不親切な備忘録

beatorajaでDXGI Swapchainは使わないほうが良い(NVIDIA系グラボのみ)

■結論

beatorajaを遊ぶJREjava.exeもしくはjavaw.exeは、NVIDIAコントロールパネルの3D設定における「Vulkan/OpenGLの既存の方法」を「ネイティブを優先する」にしておけば良い。

 

■概要

NVIDIAコントロールパネルの3D設定には、OpenGLもしくはVulkanを利用するアプリケーション向けに「Vulkan/OpenGLの既存の方法」という設定項目がある。

項目は以下の3つだ。

  • 自動
  • ネイティブを優先する
  • DXGI Swapchainのレイヤーを優先する

ほとんどのゲーム向け設定紹介サイトでは「自動」にしておくように記されており、実際のところOpenGLを使っている著名なゲームはMinecraft(JE)くらいで、Vulkanを利用できるFPSゲームも現状少ないので、この項目は特に影響を与えないことのほうが多い。

 

しかし、beatorajaはOpenGLで描画されている。つまるところ、この項目が動作に影響を与えるはずである。

実際に試したのだが、「DXGI Swapchainのレイヤーを優先する」にするとプレイ中に時々カクつく。

「ネイティブを優先する」ではカクつきが発生しない。

 

■理由

以下の内容は筆者の想像で、事実と異なる可能性がある。

項目にカーソルを合わせた時に、以下のような説明が出る。

常々思っているのだがここの和訳はどれも適当すぎる

文章の通りに解釈すると、OpenGL系のAPIと互換性を持つDirectXAPIがドライバ側で用意されていて、そちらで処理を行うように動作を変更する、という風に思える(根拠はない)

APIのアクセス先を本来想定されているものとは別のものへドライバ側で変更しているので、何らかの不都合が生じ、時々カクついてしまうのではないだろうか。

 

■おわりに

今回は偶然気づけたが、設定が自動になっていたりしたら、勝手にDirectXの方でレンダリングが行われていて、理由も分からず動作不良になっている、なんてことがありえる。

この記事が誰かの役に立てば良いのだが。