私は比較的DirectXには新しく、既存のC++ DX9アプリケーションで作業する必要があります。アプリケーションはカメラ画像を追跡し、DirectDraw(すなわち2d)のコンテンツを表示します。カメラのアスペクト比は4:3(常に)で、画面は未定義です。DirectX9任意のサイズのテクスチャ(非2^n)
テクスチャをロードしてこのテクスチャをマスクとして使用したいので、コンテンツの追跡と表示はテクスチャのマスクされた領域内で行われます。したがって、私はカメラの画像とまったく同じサイズのテクスチャをロードしたいと思います。
私はテクスチャをロードするすべての手順を行って、私はフィールドWidth
とD3DSURFACE_DESC
構造体のHeight
GetDesc()
を呼び出すときに、次の大きなパワーの-2サイズできました。私は、テクスチャに使用されている実際のメモリがグラフィックスカードに最適化されているかどうかは気にしませんが、ハードディスク上の元のイメージファイルのサイズを得る方法はありませんでした。
コードに新しい依存関係を追加することなく、画像をコンピュータのRAMにのみ読み込む(グラフィックカードは必要ありません)可能性を検索します(成功しませんでした)。さもなければ、私はOpenCVを使用しなければならないでしょう(これは、トラッキングに関しては、とにかく良いアイデアかもしれませんが)、現時点ではまだOpenCVを避けようとしています。あなたのヒントのための
おかげで、 ノルベルト
これは、デバイスが2の非累乗をサポートしている場合に動作します(私が知っている限り、ほぼすべて動作します)。 – CiscoIPPhone
さて、古いカードはおそらくないでしょう。しかし、最近のカードのほとんどすべてがそうです。 – Ricket
実際には、__3rd last__パラメータをD3DXCreateTextureFromFileExに渡すと、幅と高さがD3DXIMAGE_INFOになります – bobobobo