ドッキングウィンドウ on WPF での OpenGLView


前回の延長戦で、ドッキングウィンドウとの組み合わせを試してみました。
ドッキングウィンドウには AvalonDock (WPF Extended Toolkit 付属) を用いています。

はじめに

AvalonDock でドッキング可能なドキュメントとして、前回の カスタム版 D3D11Image を貼り付けています。
ここに OpenGL の描画をはめ込む形です。

今までのものと大きく異なるのは以下の点だと思います。

  • 独立したウィンドウになることがある(フローティングウィンドウ)
  • 表示/非表示のタイミング
  • Window に貼り付けられているわけでなく UserControl 以下

これらの条件変化によって、動きが変わるかを確認してみました。

wpf_avalondock_ogl
続きを読む


WPF で OpenGL の描画はめ込み


WPF アプリで OpenGL の描画結果をはめ込めたらいいなと思ってトライしてみることにしました。
WPF は DirectX9 で動いているため、またアプリ全体で1つのウィンドウハンドルとなっているため、従来の C# フォームアプリのように特定の部分だけ描画を任せるというようなことが難しくなっています。

続きを読む



Windows Server 2016 で RemoteFX GPU の実験


Windows Server 2016 で個人的に魅力的に感じている RemoteFX 仮想 GPU について実験してみました。

Windows Server 2016側の準備

Hyper-V の役割だけでなく、リモートデスクトップ仮想化ホスト の役割もインストールして RemoteFX を使えるようにします。
今回の環境では Intel HD Graphics のドライバがうまく適用できなかったので、
Radeon 7750 を装着して DirectX, OpenGL が動くようにしました。
ちなみに最近のドライバをインストールしましたが、 WHQL 非取得でしたが、 7750 でも Vulkan も動きました。
(vulkaninfo を実行できて、情報が色々と表示されました)。

第2世代仮想マシンでは RemoteFX GPU が使えないという情報があったので、
仕方なく第1世代仮想マシンを作成し、 Windows10 Pro をインストールしました。

ちなみに 第2世代仮想マシンで RemoteFX GPU がちゃんと動いたという情報もあるのですが、
現時点においては正式なサポートというわけでもないようなので、まずは第1世代で試したというわけです。
続きを読む


Windows Server 2016 のUSBメモリからインストールとWindowsコンテナの実験


Windows Server 2016 には興味深い機能があったので検証してみたいところでした。
MSDN でも入手可能になったので早速インストールを試みたわけですが、そのときの記録です。
(早速といってますが、実は10月半ばには入手可能になっていた模様。 MSDNで見当たらなかったので落胆していましたが、確認したタイミングの問題でしょうか)

続きを読む


OpenGL で SPIR-V のシェーダー


OpenGL にも SPIR-V のシェーダーコードを使えるようにする GL_ARB_gl_spirv という拡張が存在します。ベンダー拡張ではなくいきなり ARB として定義されているので標準的に使える日もそう遠くないと思っています。

自分が使っているのが NVIDIA Geforce 650 Ti ですが、比較的最近のドライバ (375.57) でこの GL_ARB_gl_spirv が出現していました。この環境で簡単ではありますが、動作の確認やコードの書き方などやってみたいと思います。

ogl_spirv_test
続きを読む




OpenGL と DirectX9 で共有リソース


HDD の中の実験コードらを整理していたらずいぶん前に作っていた NV_DX_interop 拡張を利用したコードを発見しました。
OpenGL と DirectX9 を1つのアプリケーションの中で使い、リソースを共有して使えるという点が魅力的です。

WGL_NV_DX_interop

この WGL_NV_DX_interop 拡張は名前の通り NVIDIA のベンダー拡張として定義されています。
詳しい説明は OpenGL Registry の https://www.opengl.org/registry/specs/NV/DX_interop.txt を参照してください。

この拡張では OpenGL と DirectX9 のリソースを共有を実現します。以下のリソースが共有できるようです。

  • テクスチャ(2D, 3D,Cubemap)
  • 頂点・インデックスバッファ

API をまたいで、リソースを使えるという点で非常に興味深いですね。
続きを読む