S.F. Page

Programming,Music,etc...

DXGI

音声ファイルから動画ファイルを生成する(66) – 非同期エージェントによる描画

描画を別スレッドにする スワップチェインは周期的に全画面を書き換えるようなアプリ、つまりゲームには向いているが、元の画像から部分的に書き換えるようなというか、部分的な書き換えがランダムな間隔で発生するようなUI描画には向いていない。やはり描画…

音声ファイルから動画ファイルを生成する(65) – スワップチェインの部分更新

スワップチェインの部分更新 DXGI 1.2からDirty RectangleとScroll Areaがサポートされた。詳細は「Enhancing presentation with the flip model, dirty rectangles, and scrolled areas」にであるが、絵だけ引用すると となっている。これにより、更新が必…

音声ファイルから動画ファイルを生成する(64) – タイトルバーのカスタマイズ~ウィンドウ自前描画

タイトルバーにタブを置く方法を試してみる。 Chromeのようにタブをタイトルバーに置きたいので、「Custom Window Frame Using DWM」ここに書いてある方法を試してみた。 手順としては下記の通りだ。 WM_CREATEメッセージをハンドルし、SWP_FRAMECHANGEDフラ…

音声ファイルから動画ファイルを生成する(14) – グラフィックスAPIを抽象化する

DXGIとかDirect2D/3Dを抽象化するクラスを作っている。APIを隠ぺいするほどでもない中途半端な抽象化になりそうだが、階層関係にあるオブジェクトはそうなるように構成をしたり、RAIIを意識して作るとか、スマポでラッピングするとか。いまいちわからないの…

Box2D + WinRTでゲームを作る (3) – 動画出力方法を考える

今日はMedia Foundationドキュメントをみながらスワップチェインをどう出力するのかを考えていた。GPUメモリ -> CPUメモリの転送も極力減らしたいし、 拡大縮小もGPUにやらせたい。で以下の手順でいけるのではないかと。 スワップチェインと同じ大きさのテク…

Box2D + WinRTでゲームを作る (2) - 動画出力を試みる

作成中の画面を動画にしていたのだが、ちょっと処理速度的に厳しくなってきた。 アマレココでもExpression Encoderでも15FPSで処理がもたつく。デスクトップのキャプチャーは結構重い処理なのであろう。 Media FoundationのSink Writerを使って、スワップチ…

DXGIスワップチェインをDirect2DとDirect3Dとで共有する

DXGIスワップチェインをDirect2DとDirect3Dとで共有することができた。やはりWindows8では比較的簡単にできる。ここまで来るのに2週間ちかくかかっているので簡単というには憚る感じもするが、まあWindows 7よりは簡単になったということである。 ソースコー…

AlphaBlend

AlphaBlendはWindows2000からあるAPIである。Window7 & WDDM 1.1ドライバであればこのAPIは高速化されることが義務付けられている。でもどの程度高速化されるのかはハードウェア次第だと思うけれど。 昔DirectDrawというのがあって、画面転送を高速に行うた…

頭の中がごちゃごちゃしてきた。

DWM・レイヤードウィンドウ・Direct2D・Direct3Dについて調べていると頭のなかがごちゃごちゃしてきた。整理したいなぁとは思うけどもう少し勉強しないとだめだろうね。リージョンによる不定形ウィンドウとかWPFとかGDI・GDI+とか。使い方よりは相互の関係を…

DXGI -> Direct3D11 - 画面クリアできるくらいまで

とりあえず画面クリアまでのコードを書いた。 RenderTargetViewを作れば画面クリアができるようになる。RenderTargetView作成に至るまでの各インターフェースの関係などまだ理解していない部分がかなりある。以下初期化部分のコード。 virtual void create_d…

DXGI - 黒い画面を表示

とりあえず初期化コードを書いて黒い画面を表示。といっても画面クリアさえもしていない状態。 ソースコード スワップチェーンを作るために何かレンダリングするデバイスを作らないといけないのでD3D11デバイスを作っている。本当はDirect2Dまでいかない低レ…

DXGI - ResizeBuffersするときに気をつけること

DXGIではウィンドウがリサイズされるとフロントバッファは自動的にリサイズされる。DXGI:ベストプラクティスを見るとWM_SIZEの処理はバックバッファをResizeBuffersすれば良いだけのように書いてある。がそうではない。 「ホイール欲しい ハンドル欲しい」…

DXGI - 初期化コードを書く

DXGIの理解がある程度できたので、初期化コードを書き始めている。 スワップチェーンの生成までの流れは下記の通りである。 CreateDXGIFactory1で、 IDXGIFactory1インターフェースを得る IDXGIFactory1のEnumAdapter1メソッドでIDXGIAdapter1インターフェー…

DXGI (2)

DXGIの理解を深めるため、作りかけのタイマーアプリのコードをベースにテストコードを書いてみようとしつつ、DXGIベストプラクティスガイドを読んでいた。 DXGIはいろいろと手取り足取りアシストしてくれるが、DX9コードからの移行に関しては逆にそれがハマ…

DXGI

DXGIって何かと言うと、なんぞや?と調べた結果。 参考・参照:http://vplab.snu.ac.kr/lectures/11-1/comp_appl/ DXGIは下記の処理を受け持つインターフェースである。 ディスプレイ・アダプタおよび出力の抽象化 スワップ・チェーンの管理 ウィンドウ・リ…