DirectX一覧

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 をまたいで、リソースを使えるという点で非常に興味深いですね。
続きを読む



Windows10 IoT Core のアニバーサリーアップデート

デスクトップの Windows10 にアニバーサリーアップデートが来たように、 Windows 10 IoT Core についても アニバーサリーアップデートが来ました。今回はこれの導入手順や新機能などを紹介してみたいと思います。

導入について

以前にIoT Core を導入している場合で、 Windows 10 IoT Core Dashboard がインストールされている環境では、 Dashboard を起動すると以下のようにウィンドウが表示されて、更新を促されるので更新を行います。
win10-iot-update-01

ちなみに Windows 10 IoT Core Dashboard は以下のページから取得可能です。
Microsoft Windows 10 IoT Core Get Start
こららの詳細は、以前の導入記事を参照していただければと思います。

win10-iot-update-02
Dashboard から必要事項を入力して microSD カードにイメージデータを書き込みます
他に作業することはないのでしばらく待ちます。

書き込みが完了した microSD カードを Raspberry Pi 2 に装着して、電源をいれます。
初回起動にはそこそこの時間(5分程度)がかかるので、画面が落ち着くまで待ちます。

ちなみに OS のバージョンとしては 10.0.14393.0 となっていました
続きを読む


GPUView の導入について

以前とりあえず GPUView を起動させてみることはやってみました。今回はそんな GPUView をもっと簡単に試せる方法が見つかったのでブログにまとめてみます。

通常の方法

簡単に使える版の前に通常の導入・使用方法をまとめておきます。

Windows Performance Kit の導入

GPUView は Windows Performance Kit の一部として含まれています。現時点ではこれが所属するパッケージが OS の種類によって異なります。

続きを読む


Raspberry Pi 2 で D3D12 (正式版IoT Coreにて)

以前のプレビュー版のときには失敗してしまった DirectX12 (D3D12) の動作ですが、正式版になった今はどうだろうかと調べてみました。結論からすれば、うまく動作しているようで、さらにはデバッグ情報もきちんととれそうな感じなのでお遊びにすごくよさそうな印象です。

確認

このコマンドプロンプトが使えるようになったので、以前うまく動かなかった D3D12 についてどうだろうと確認してみました。とりあえずは d3d関連の DLL を確認してみたところ以下のようになっており、DirectX9 は完全に死滅しているようです。しかし D3D12 については今も DLL が新しいモノが入っているのでちょっと期待できそうです。
windows10-iot-core-rpi2-system32

早速コレを動作確認したいとおもいます。
続きを読む


D3D12でテクスチャの挙動がしんどい

DirectX12 (D3D12) でテクスチャ生成時の挙動がドライバ依存しているようで結構しんどい気がします。巷によく掲載されているコードでは手元の RADEON HD 7750 ではうまく動作しませんでした。d3d12.dll の中で不正メモリアクセスをするような感じでエラーが発生してしまいます。

今回、 Intel HD Graphics Gen8 の環境を構築したので、こちらでもテストしてみたところ正常にテクスチャ生成&描画が出来ていることを確認できました。デバッガで停止しないという点では NVIDIA でも同様でしたが、画像としては正しくないという状況でした。
 これらの結果を見ると三者三様でそれぞれに癖がありそうです。 CreateCommittedResource から WriteToSubresource という方法では結果が一致しないので、どこでも動くアプリではこれらの方法は避けた方が無難と言えるでしょう。

正しく動くと思われる方法は、 UPLOAD ヒープに転送したうえで、 DEFAULT ヒープに GPU 側で転送するケースです。 UPLOAD ヒープの処理があるので生成時に若干手間になることが予想されます。

しかし動的なテクスチャの場合にはこの方法だと実行コストがかかっているように思います。 CommittedResource で生成した領域に直接かけるほうが得なのですが・・・。頂点データなどはそれが出来ているだけに残念です。

追記

Intel HD Graphics Gen8 がうまく動いている理由はメモリが UMA だからじゃないかという話もありました。確かに他の2つの環境ではディスクリート GPU であるので、メモリ場所も違うのは確かにありましたね。これを考慮すると UPLOAD から DEFAULT への転送もちょっと納得がいきますね。 APU ではどのような挙動を示すのか、試してみた人がいたら教えてもらいところです

以上色々と書いていますが、あくまで個人の見解です。挙動からそんな気がしているというだけです。


マイクロソフトの DirectX12 のサンプルを動かす

公式に Microsoft から D3D12 (DirectX12) のサンプルが公開されましたが、これを動かすまで一手間があったので記録として残しておきます。

Windows10 の環境で、 Visual Studio 2015 Community がインストールされている状況で、GitHub からリポジトリをクローンしてくるだけでは実は不十分でした。Windows SDK もまた別途ダウンロード&インストールすることが必要でした。
Windows10 の Windows SDK はこちらからダウンロードできました。
https://dev.windows.com/ja-jp/downloads/windows-10-sdk

インストール後は Visual Studio から 10.0.10240 の SDK として見えるので、無事にビルドできるようになりました。サンプルもまたこのSDKバージョンを期待して作成されているようです。

自分の手元の環境では一通り動作させて見ました。一応全部動作はしましたが、 D3D11on12 のサンプルだけはデバッガの方に警告メッセージが流れている状態でした。 RADEON HD 7750 を装着しての環境で発生しています。他の環境ではもしかしたら発生しないかもしれません。以前の Insider Preview の状態からのアップデート繰り返しの環境で試したため、そのうちクリーンにインストールしてみて試すなどするかもしれません。

追記

VisualStudio 2015 のインストール時に、Windows 開発キットも一緒にインストールすることは可能でした。カスタムのインストールから設定でうまく出来ました。上記の方法は、これで入らないケースや、入れ忘れてしまったケースへの対処ということで。


正式に Windows10 が出ました

先日 Windows10 がリリースになりました。すでにインストール出来た方もちらほらいるようです。また、それよりも前には Visual Studio 2015 がリリースになっていました。ようやく両者そろったことで、安心して Windows10 開発に向けて力を注げる感じになったと思います。

 当ブログとしては DirectX12(D3D12) にとても関心があるので、そのあたりを確認していこうと思っていたら、なんとマイクロソフトから公式のサンプルが公開されていました。
URLは https://github.com/Microsoft/DirectX-Graphics-Samples となってます。

内容としては経験者にとっても充実のものとなっています。初心者向けもちゃんと入っていて、 D3D12HelloWorld の中にあるものをまずは確認していくとよい感じになってました。当ブログの昔の内容に近い、画面クリアやポリゴンをとりあえず描画する感じのものが入っていましたので。

 これから確認していこうと思っていますが、サンプルを改めて解説していこうか、新規にサンプルを作るか、悩みどころです。そのうち至る所で D3D12 入門記事が出てきそうですし、きっと解説も上手でしょう。まずは、 Windows10 + VisualStudio 2015 というメイン環境をそろえるところからだったりしますが、久しぶりにワクワクしています。

今となっては昔のDirectX12記事(まだ有効そうに思えた部分の抜粋)


AMD で DirectX12

先日 AMD のドライバも Windows10 正式ドライバが出たとのことで、別件での実験過程もあったので以前作成した DirectX12 のプログラムを実行させてみました。
新ドライバの方をAMDのサイトからダウンロード&インストールして、デバイスマネージャーで確認してみたところ、 Engineering Sample のメッセージが消えていました。 Windows Update で降ってくるドライバだとまだ残っていたようですが・・・。 続きを読む


メインメモリ領域をテクスチャにできる?!

DirectX 9.0 Ex の話になりますが、マイクロソフトの MSDN の説明に以下のようにありました。

Applications that need more flexibility over the use, allocation and deletion of
 the system memory can now create textures from a system memory pointer. 
For example, an application could create a Direct3D texture 
from a GDI system-memory bitmap pointer.

MSDN のページとしてこちら :
https://msdn.microsoft.com/en-us/library/windows/desktop/bb219800(v=vs.85).aspx

この内容を見ると、メモリ領域を指定してテクスチャを生成できるように思います。また参照先の内容を見るとテクスチャを破棄するまでその領域は存在しなくてはならないようなので、ある意味でダイナミックなテクスチャが楽に出来そうな気配もあります。
続きを読む