0

私は DirectX に比較的慣れておらず、既存の C++ DX9 アプリケーションで作業する必要があります。アプリはカメラ画像を追跡し、いくつかの DirectDraw (つまり 2d) コンテンツを表示します。カメラの縦横比は 4:3 (常に) で、画面は未定義です。

テクスチャをロードし、このテクスチャをマスクとして使用したいので、コンテンツの追跡と表示は、テクスチャのマスクされた領域内でのみ行われます。したがって、カメラ画像とまったく同じサイズのテクスチャをロードしたいと思います。

テクスチャをロードするすべての手順を実行しましたがGetDesc()、フィールドWidthと構造体Heightを呼び出すD3DSURFACE_DESCと、次に大きい 2 の累乗のサイズになります。テクスチャに使用される実際のメモリがグラフィックス カード用に最適化されているかどうかは気にしませんが、ハードディスク上の元の画像ファイルのサイズを取得する方法が見つかりませんでした。

コードに新しい依存関係を追加せずに、コンピューターのRAMのみにイメージをロードする可能性を検索します(グラフィックカードは必要ありません)。それ以外の場合は、OpenCV を使用する必要があります (追跡に関しては、とにかく良い考えかもしれません) が、現時点では OpenCV を含めないようにしています。

ヒントをありがとう、ノーバート

4

2 に答える 2

3

D3DXCreateTextureFromFileExパラメータ 3 と 4 を

D3DX_DEFAULT_NONPOW2.

その後、使用できます

D3DSURFACE_DESC Desc;
m_Sprite->GetLevelDesc(0, &Desc);

高さと幅を取得します。

于 2009-07-27T09:45:17.010 に答える