DirectX

DirectX

Direct3D9Exでフルスクリーン

DirectX9 でのフルスクリーンのサンプルはそこそこ見かけるのですが、DirectX9Ex でのフルスクリーンのサンプルってほとんど見かけないので作ってみました。通常の DirectX9 とほとんど同じで、違う箇所は初期化のところだけだったのでその部分だけを本記事では紹介したいと思います。 DirectX9Exの初期化 Direct3DCreate9 の...
DirectX

BC7の圧縮ノイズについて調べてみた

優秀だという BC7 圧縮の品質がどんなものか調べてみました。 そのためにはそこそこの品質以上の画像データが必要だったので友人に協力してもらい画像を使わせてもらっています。 この場を借りてお礼申し上げます。 BC7への圧縮については Codeplex からダウンロードできる Microsoft の TexConv を使用しています。この最高品質となる CPU...
DirectX

DirectX9 on Windows 7 でメモリの消費調査

今回は DirectX 9.0 を用いた場合ではどんな感じになるのかを調べてみました。環境は Windows 7 (x64) です。また DirectX 9.0 と表記していますが、実際のところは DirectX 9.0 EX のことを指すものとします。 Windows XP までの頃は VRAM の仮想化というものがなく、デバイスロスト発生のためのケアが必...
DirectX

DirectX11の場合のシステムメモリとVRAM消費について

今までは OpenGL の場合を調査してきました。今回は DirectX11の場合を調べてみようと思います。ドライバが一緒ならきっと同じ傾向を示すんじゃないかなと予想して実験をスタートです。 実験 DirectX11のプログラムとして、100フレームごとに頂点バッファ 32MB を確保し、次フレーム以降はこのデータを使って描画するプログラムを作成しました。 ...
DirectX

GPUViewを使う前に

GPUViewを使ってみようと思い、Windows Performance Toolkit とかを入れてみたのですが、ログ収集のためのコマンドバッチ log.cmd を実行するとエラーが出ることが確認できました。ちなみにこの症状は WIndows7 64bit 上で確認しています。  そのエラーというのが、「4000 の使い方が誤っています。」というもので、...
DirectX

XInputの注意事項

最近になってゲームパッドのコーナーを見てみると、純正XBOX 360パッド以外でもたくさんの XINPUTの対応パッドが並んでいることに気付きました。これはXINPUT無視できないなーと感じました。また多くのパッドが DirectInput との切り替えスイッチを持っていて、両対応できるようになっていました。  これはアプリケーション側も両対応しておいたほう...
DirectX

DirectX11で複数ウィンドウを使ってみる

最近Mach-Oの調査ばっかりやっているので、DirectX11とか触ってるとほっとします。 昨今では2つのディスプレイが繋がっていることも珍しくないと思います。 それぞれに対してDirectXアプリケーションのフルスクリーンやりたいとか、独立した複数ウィンドウでDirectXの描画やりたいとかそういうときにどうしたらよいかを実験してみました。 結論から言え...
DirectX

DirectX11でMSAA

DirectX11でMSAA(Multi Sampling Antialias)を試してみました。 検索でよく見つかるのが、プライマリのバッファをMSAA使用する例はよくみかけるのですが、テクスチャレンダリングする場合においてMSAA有効でレンダリングするというサンプルを見つけることはできませんでした。 そんなに難しい話ではないのですが、サンプルプログラムが...
DirectX

OpenGLとDirectX11で、あと何が足りてないか

ここ1ヶ月ほどは主に最近のOpenGLについて勉強しているわけですが、DirectX11と比べてまだ何が足りていないかまとめてみます。 やったこと テクスチャ配列 (DX10だけど) ジオメトリシェーダーでストリームアウト&ポイントスプライト (DX10だけど) ハードウェアでのインスタンシング描画 テセレーションのシェーダーについて(TCS, TES) シ...
DirectX

Draw Indirect 系を調べてみた (OpenGL vs DirectX)

OpenGL では Draw Indirect 系が充実しているとの情報があったので、DirectXとどのように違うのかを調べてみました。 DirectX 11 では、 DrawInstancedIndirect(), DrawIndexedInstancedIndirect() の2つの関数が DrawIndirect系として使用可能です。DirectX1...