Platform SDK: DirectX

D3DXCreateContextEx

D3DXCreateContextEx 関数は、指定したデバイスを初期化する。ただし、これは D3DXCreateContext 関数によりも高度な初期化関数である。

HRESULT D3DXCreateContextEx(
  DWORD deviceIndex,
  DWORD flags,
  HWND hwnd,
  HWND hwndFocus,
  DWORD numColorBits,
  DWORD numAlphaBits,
  DWORD numDepthbits,
  DWORD numStencilBits,
  DWORD numBackBuffers,
  DWORD width,
  DWORD height,
  DWORD refreshRate,
  LPD3DXCONTEXT* ppCtx
); 

パラメータ

deviceIndex
デバイスを指定するインデックス値。このパラメータに D3DX_DEFAULT を指定すると、プライマリ サーフェスに関係のあるアクセラレート レベルの最高レベルによりデバイスが初期化される。指定可能なすべての値のリストについては、ハードウェア アクセラレート レベル定数」を参照すること。
flags
有効なフラグは、D3DX_CONTEXT_FULLSCREEN と D3DX_CONTEXT_OFFSCREEN である。これらのフラグを両方共指定することはできない。フラグを指定しない場合、コンテキストによりデフォルトのウィンドウ モードが適用される。
hwnd
デバイス ウィンドウ。「注意」を参照すること。
hwndFocus
「注意」を参照すること。デバイス ウィンドウからキーボード メッセージを受け取るウィンドウ。デバイス ウィンドウは、フォーカス ウィンドウの子ウィンドウである。このパラメータは、マルチ モニタ アプリケーションで有用である。
numColorBits
カラー ビット数。ウィンドウ モードで D3DX_DEFAULT を指定すると、カレント デスクトップの色深度が選択される。フルスクリーン モードの場合、D3DX_DEFAULT を選択すると、16 ビット カラーが使用される。
numAlphaBits
アルファ チャネルに確保されているビット数。D3DX_DEFAULT を指定すると、0 が選択される。
numDepthbits
深度バッファに確保されているビット数。D3DX_DEFAULT を指定すると、使用可能な深度ビット数の中で最も高い値が選択される。「注意」を参照すること。
numStencilBits
ステンシル バッファに確保されているビット数。D3DX_DEFAULT を指定すると、使用可能なステンシル ビット数の中で最も高い値が選択される。「注意」を参照すること。
numBackBuffers
バック バッファ数、またはD3DX_DEFAULT。「注意」を参照すること。
width
ウィンドウの幅 (ピクセル単位)、またはD3DX_DEFAULT。「注意」を参照すること。
height
ウィンドウの高さ (ピクセル単位)、または D3DX_DEFAULT。「注意」を参照すること。
refreshRate
リフレッシュ レート。ウィンドウ モードとオフスクリーン モードの場合、このパラメータは無視される。D3DX_DEFAULT は、DirectDraw にアプリケーションに合った値を選択させることを意味している。
ppCtx
選択したデバイスのレンダリングで使用するコンテキスト オブジェクトへのポインタのアドレス。

戻り値

成功すれば、S_OK を返す。

失敗すれば、次いずれかの値を返す。

D3DXERR_D3DXNOTSTARTEDYET
D3DXERR_INITFAILED
D3DXERR_INVALIDPARAMETER
D3DXERR_NOMEMORY
D3DXERR_NOZBUFFER
D3DXERR_NOZBUFFERAVAILABLE
D3DXERR_NULLPOINTER
DDERR_CANNOTATTACHSURFACE
DDERR_GENERIC
DDERR_INCOMPATIBLEPRIMARY
DDERR_INVALIDCAPS
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_INVALIDPIXELFORMAT
DDERR_INVALIDSURFACETYPE
DDERR_NOALPHAHW
DDERR_NOCLIPPERATTACHED
DDERR_NOCOOPERATIVELEVELSET
DDERR_NODIRECTDRAWHW
DDERR_NOEMULATION
DDERR_NOEXCLUSIVEMODE
DDERR_NOFLIPHW
DDERR_NOMIPMAPHW
DDERR_NOOVERLAYHW
DDERR_NOPALETTEATTACHED
DDERR_NOPALETTEHW
DDERR_NOT8BITCOLOR
DDERR_NOZBUFFERHW
DDERR_OUTOFMEMORY
DDERR_OUTOFVIDEOMEMORY
DDERR_PRIMARYSURFACEALREADYEXISTS
DDERR_SURFACEALREADYATTACHED
DDERR_SURFACELOST
DDERR_UNSUPPORTED
DDERR_UNSUPPORTEDMODE
DDERR_WASSTILLDRAWING

注意

アプリケーションがウィンドウ モードで動作している場合、hwnd は有効なウィンドウでなければならない。hwndFocus パラメータは、NULL または D3DX_DEFAULT でなければならない。また、width または height パラメータのいずれかが D3DX_DEFAULT の場合、両方の値に hwnd クライアント領域のディメンジョンのデフォルト値が設定される。numBackBuffers に D3DX_DEFAULT を指定すると、1 が使用される。そのためバック バッファを 1 つ指定する必要がある。

アプリケーションがフルスクリーン モードで動作している場合、hwnd または hwndFocus のいずれかが有効なウィンドウでなければならない (両方共に NULL または D3DX_DEFAULT を指定することはできない)。hwnd が NULL または D3DX_DEFAULT の場合、デフォルト デバイス ウィンドウが hwndFocus の子ウィンドウとして作成される。また、width または height のいずれかが D3DX_DEFAULT の場合、デフォルト値として width には 640 ピクセルが、height には 480 ピクセルが設定される。numBackBuffers に D3DX_DEFAULT を指定すると、1 が使用される。そのためバック バッファを 1 つ指定する必要がある。

アプリケーションがオフスクリーン モードで動作している場合、hwnd と hwndFocus は NULL または D3DX_DEFAULT でなければならない。width または height のいずれかが D3DX_DEFAULT の場合は、エラーが返される。numBackBuffers に D3DX_DEFAULT を指定すると、0 が使用される。そのため、追加のバック バッファを指定でない。

numDepthBits パラメータと numStencilBits パラメータが両方共 D3DX_DEFAULT の場合、Direct3DX はまず使用可能なステンシル ビット数の最高値を選択する。次に、選択したステンシル ビットについて、使用可能な深度ビット数の最高値を選択する。numStencilBits パラメータまたは numDepthBits パラメータのいずれかだけが D3DX_DEFAULT の場合、そのデフォルト パラメータで使用可能なビット数の最高値が、固定パラメータで要求されたビット数をサポートしたフォーマットから選択される。

すべての関数について、D3DXCreateContextEx が障害発生時に安全であると考えてはならない。サポートされているデバイスの能力は、パラメータ値を選択するためのガイドとして使用すること。パラメータの組み合わせの中には、うまく動作しないものが必ず存在する。

D3DXCreateContextEx 関数によりセット アップされるデフォルト射影行列は、pi/2 ラジアンの視域 (fov) での左手座標系パースペクティブ射影である。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以上が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン : DirectX 7.0 が必要。
  ヘッダー : d3dxcore.h で宣言。
  ライブラリ : d3dx.lib を使用。

参照

D3DXCreateContext