「 OpenGL 」一覧

EXT_external_objects の実験


OpenGL 4.6 の発表の中で、各Graphics API との Interop の話がありました。
ここで、EXT_external_objects 拡張 (スライドでは EXT_memory_object となっていましたが) が、面白そうだったので触ってみました。
ただしこの内容は OpenGL 4.6 に含まれるものではなく、追加という位置付けとなっているようです。

説明など

この EXT_external_objects 拡張は、 OpenGL に他の API で作成されたオブジェクトを利用するためのものとなっているようです。
提供される API 群は、こちらの仕様の方を確認してください。

OpenGL にとっての外部メモリを利用して、OpenGL のリソースを生成する(インポートする)といった感じで、機能が準備されています。

続きを読む


Vulkan から OpenGL へ描画


Vulkan で描画した結果を OpenGL の世界で使用することができます。
これには NVIDIA 拡張を使用するので、現時点においては NVIDIA のグラフィックスボードを使用していることが条件になります。
今回のこの拡張の名前は、 GL_NV_draw_vulkan_image というもので、将来的に他のメーカーも対応するようになればいいなと思います。

何が出来るのか

GL_NV_draw_vulkan_image という拡張は何を行ってくれるのかというと、
Vulkan を使用して描画した結果を OpenGL の描画で使用するといったことを可能にしてくれます。
詳細には Vulkan の Image を用いて、 OpenGL のカレントのフレームバッファに対して矩形を描画します。
これにより Vulkan でオフスクリーンに描画した結果を (FBOを用いて) OpenGL のテクスチャにするといったこともできます。

API の仕様は、以下の URL にて記載があるので興味のある人はご確認ください。
NV_draw_vulkan_image

続きを読む


OpenGL 4.6 発表!


2017年の SIGGRAPH で OpenGL バージョン 4.6 が公開となりました。
Vulkan が登場して、 OpenGL もバージョンアップを続けるとといわれても不安なところでしたが、ちゃんと出ました。
今回の目玉と個人的に思っているのは、 SPIR-V 関連が標準サポートに入ってことですね。これで事前コンパイル済みシェーダーを OpenGL でも使うことが出来るようになります。

SPIR-V を OpenGL で使用してみることは 4.5 のころの拡張で入っていました。このときの実験の結果は以前の記事に書いてあります。興味のある方はそちらも参照ください。
続きを読む


Mesa3D のレンダラーの切り替え


Linux の OpenGL 実装で有名な Mesa3D ですが、レンダラーの切り替えができることがわかったのでメモしておきます。
ちなみに The Mesa 3D Graphics Library って現時点においては 17.0 となってました。しかしながら動作実験環境は Ubuntu 16.04 で apt でインストールできるものを使用しているため、これよりも古いです。

切り替え方法

以下の環境変数で指定が可能です。

  • LIBGL_ALWAYS_SOFTWARE
  • GALLIUM_DRIVER

この環境変数で LIBGL_ALWAYS_SOFTWARE=1 とするとソフトウェア(エミュレーション)でのレンダラーが選択されるようです。
そして GALLIUM_DRIVER=softpipe を指定することで llvmpipe との切り替えができるようです。


続きを読む


Nexus5X を Android 7.1.1


Nexus5X の端末に Android 7.1.1 の OS が配信されてきたので更新してみました。
Android 6.0.1 からの更新となり、 7.0 を飛ばしてしまった感じになりました。

更新結果

動作そのものが重くなるかなと思いましたが、逆にレスポンス良く動くようになった気がします。
そして OpenGL ES 3.2 のコンテキストで初期化できるようになったようです!今までに ES 3.2 のコンテキストで動く端末を見てなかったので感動です。

続きを読む


ドッキングウィンドウ 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世代で試したというわけです。
続きを読む


OpenGL で SPIR-V のシェーダー


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

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

ogl_spirv_test
続きを読む