本文整理汇总了C++中CLight::Init方法的典型用法代码示例。如果您正苦于以下问题:C++ CLight::Init方法的具体用法?C++ CLight::Init怎么用?C++ CLight::Init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CLight
的用法示例。
在下文中一共展示了CLight::Init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Init
//=============================================================================
// 初期化
//=============================================================================
HRESULT CRenderer :: Init(HWND hWnd,BOOL bWindow)
{
//ライト
CLight* pLight;
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;
// Direct3Dオブジェクトの生成
m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if(m_pD3D == NULL)
{
return E_FAIL;
}
// 現在のディスプレイモードを取得
if(FAILED(m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
{
return E_FAIL;
}
// デバイスのプレゼンテーションパラメータの設定
ZeroMemory(&d3dpp, sizeof(d3dpp)); // ワークをゼロクリア
d3dpp.BackBufferCount = 1; // バックバッファの数
d3dpp.BackBufferWidth = SCREEN_WIDTH; // ゲーム画面サイズ(幅)
d3dpp.BackBufferHeight = SCREEN_HEIGHT; // ゲーム画面サイズ(高さ)
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; // バックバッファのフォーマットは現在設定されているものを使う
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 映像信号に同期してフリップする
d3dpp.Windowed = bWindow; // ウィンドウモード
d3dpp.EnableAutoDepthStencil = TRUE; // デプスバッファ(Zバッファ)とステンシルバッファを作成
d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; // デプスバッファとして16bitを使う
if(bWindow)
{// ウィンドウモード
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; // バックバッファ
d3dpp.FullScreen_RefreshRateInHz = 0; // リフレッシュレート
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; // インターバル
}
else
{// フルスクリーンモード
d3dpp.BackBufferFormat = D3DFMT_R5G6B5; // バックバッファ
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; // リフレッシュレート
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; // インターバル
}
// デバイスオブジェクトの生成
// [デバイス作成制御]<描画>と<頂点処理>をハードウェアで行なう
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, // ディスプレイアダプタ
D3DDEVTYPE_HAL, // ディスプレイタイプ
hWnd, // フォーカスするウインドウへのハンドル
D3DCREATE_HARDWARE_VERTEXPROCESSING, // デバイス作成制御の組み合わせ
&d3dpp, // デバイスのプレゼンテーションパラメータ
&m_pD3DDevice))) // デバイスインターフェースへのポインタ
{
// 上記の設定が失敗したら
// [デバイス作成制御]<描画>をハードウェアで行い、<頂点処理>はCPUで行なう
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&m_pD3DDevice)))
{
// 上記の設定が失敗したら
// [デバイス作成制御]<描画>と<頂点処理>をCPUで行なう
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_REF,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&m_pD3DDevice)))
{
// 初期化失敗
return E_FAIL;
}
}
}
//様々なオブジェクトの初期化処理
//レンダーステートパラメータの設定
m_pD3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);
m_pD3DDevice->SetRenderState(D3DRS_ZENABLE,TRUE);
m_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
m_pD3DDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
m_pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
// サンプラーステートパラメータの設定
m_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP); // テクスチャアドレッシング方法(U値)を設定
m_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP); // テクスチャアドレッシング方法(V値)を設定
m_pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); // テクスチャ縮小フィルタモードを設定
m_pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); // テクスチャ拡大フィルタモードを設定
// テクスチャステージステートの設定
m_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); // アルファブレンディング処理
m_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); // 最初のアルファ引数
m_pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT); // 2番目のアルファ引数
//.........这里部分代码省略.........