DirectX

DirectX

HW ShadowMapのために。

HW ShadowMapのために最近の状況をしらべてみました。 NVIDIA Geforce7x00くらいのころから搭載*1 テクスチャとしてUSAGE_DEPTHSTENCIL付きでD24S8フォーマットで作成可能 これをサンプリングするときに4近傍からの平均がとれてしまう。 AMD fetch4 X1800以外のX1xxxシリーズで使用可能 このとき、D...
DirectX

低レベルなDirectX9

ドライバーの内部エラーについて、ここに記載がちょっとありました。 こんな仕組みになっているけど、デバイスの破棄および再生成で処理を復帰っていうことが、 果たしてどのくらい可能なんだろうか。ちょっと疑問に思います。 でも、IDirect3DDevice9::ValidateDevice というメソッドを DrawPrimitive系の直前に挿入して、 デバイス...
DirectX

Collada+DirectX

海外のサイトで、COLLADAとDirectXの話が書いてありました。 さらりと見てみましたが、COLLADA DOMとその中身にどうアクセスするか、 各種メッシュ(静的メッシュ、スキニングのような骨の親子構造を持つもの、モーフィング)の扱い方 これらについて丁寧に書いてありました。 ただし、英語で、ですが。ここに。→ ソースコードも同時に公開されているので...
DirectX

D3DPOOL_MANAGEDのデータ保存先について

D3DPOOL_MANAGEDについて。 どうやら生成元となったバイナリデータ列はユーザー空間に置かれる模様。そんな挙動のため、結局のところは使用メモリがどんどん増えていくように見える。 仮に256MBほどテクスチャがあったとすると、このフラグ付きで送った場合には結局メインメモリにも同じ容量だけメモリを使われていることになってしまう。 また先日作業用のメモリ...
DirectX

テクスチャとサンプラーステートの関係

テクスチャとひとことで言った場合、この中には2つの要素が含まれていると思います。 1つは、ポリゴン表面に貼りたい画像のデータ。 そしてもう1つは、その画像に適用するフィルタ設定やUV設定といったの各設定情報。このうち後者はテクスチャフィルタやラッピングモード(アドレッシングモード)とも言われるため テクスチャの情報としてまとめられてしまうことが多いと感じます...
DirectX

CPU書き換えテクスチャ転送

DirectX9で、CPU上でごりごりとテクスチャ処理して VRAMに転送し、普段使うのはその転送後のテクスチャという方式を考えてみました。CPU上のテクスチャは D3DPOOL_SYSMEMで作り、 VRAM上のテクスチャは D3DPOOL_DEFAULTで作るという方法です。 この転送には、IDirect3DDevice9::UpdateTexture ...
DirectX

DirectX vs OpenGL テクスチャ編

DirectXとOpenGLとでテクスチャに関していろいろと違うので ここでそれらについて書いてみたいと思います。 ■用語 DirectXでは、テクスチャアドレッシングモードとテクスチャラッピングモードがあります。 OpenGLでは、テクスチャラッピングモード だけです。 しかも両者でそれぞれの言葉が意味しているものがずれており、 DirectX::アドレッ...
DirectX

続・ATIドライバの謎?

Direct3D9: (INFO) :Failed to create driver indexbuffer を調べてみた。 海外のForumでは割とよくあがっている話っぽい。このメッセージが意味するところは、 IndexBufferをVRAM上に作るときに、VRAM上に作れなかった、という話になるっぽい。 あとは、ドライバがハードウェアのインデックスバッフ...
DirectX

DirectX9のRenderStateからGL読替

DirectX9のRenderState設定がGLのどれにつながるかわからないって話を聞いた。 知っている範囲で書いてみます。 DirectX9 OpenGL D3DFILL_WIREFRAME glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ) D3DCULL_NONE glDisable( GL_CULL_FACE )...
DirectX

DirectX9でATIカードに振り回される

どうもATIのグラフィックボードおよびドライバは DirectXを正しく使わないと描画が不正になる模様。DrawIndexedPrimitiveでnMinVertex, nMaxVertexを正しく設定しないと、 それだけでポリゴンが壊れて描画されたりすることを確認できた。 ちなみにNVIDIAではこれらの情報を参考にしていないのか、 適当な値を放り込んでも...