//---------------------------------------------------------------------------------------
// シェーダ初期化
//---------------------------------------------------------------------------------------
HRESULT InitShader()
{
	// シェーダ読み込み
	HRESULT hr = D3DXCreateEffectFromFile(g_pD3DDevice,
		PATH_FXTEST, NULL, NULL, 0, NULL, &g_pFX, NULL);
	if (FAILED(hr)) {
		TCHAR szMsg[1024];
		_stprintf(szMsg, _T("シェーダ(%s)読み込みエラー"),
			PATH_FXTEST);
		MessageBox(g_hWnd, szMsg, _T("error"), MB_OK);
		return hr;
	}
	// ハンドル取得
	struct _param {
		LPCSTR		pszName;
		D3DXHANDLE*	pHandle;
	} param[] = {
		{"WORLDVIEWPROJECTION", &g_hMatWVP},
		{"WORLD",				&g_hMatW},
		{"CAMERAPOSITION",		&g_hCamera},
		{"MATERIALDIFFUSE",		&g_hDiffuse},
		{"MATERIALSPECULAR",	&g_hSpecular},
		{"MATERIALPOWER",		&g_hPower},
		{"MATERIALAMBIENT",		&g_hAmbient},
		{"MATERIALTEXTURE",		&g_hTexture},
		{"MATERIALTEXTUREVALID", &g_hTexEnable},
	};
	for (int i = 0; i < _countof(param); i++) {
		*param[i].pHandle =
			g_pFX->GetParameterBySemantic(NULL,
									param[i].pszName);
	}
	g_hLight = g_pFX->GetParameterByName(NULL, "light");
	for (int i = 0; i < MAX_TECHNIQUE; ++i) {
		g_hTech[i] = g_pFX->GetTechnique(i);
	}

	return hr;
}