void DrawModel()
	{
		auto_interface<ID3D10Device> pNativeDevice(_device.GetNativeDevice());

		// 立方体の描画

		// 定数バッファ�Aを更新
		cbChangesEveryFrame* pCBufEveryFrame = static_cast<cbChangesEveryFrame*>(_renderer.GetShaderConstantBuffer(_shader, 1));
		// ビュー変換行列
		D3DXVECTOR3 eye = D3DXVECTOR3(0.0f, 5.0f, -5.0f);  // 視点(カメラの位置)
		D3DXVECTOR3 at = D3DXVECTOR3(0.0f, 0.0f,  0.0f);  // 注視点
		D3DXVECTOR3 up = D3DXVECTOR3(0.0f, 1.0f,  0.0f); // カメラの上方向

		D3DXMatrixLookAtLH(&pCBufEveryFrame->View, &eye, &at, &up);
		D3DXMatrixTranspose(&pCBufEveryFrame->View, &pCBufEveryFrame->View);
		// 点光源座標
		D3DXVECTOR3   vLightPos(3.0f, 3.0f, -3.0f);   // 光源座標(ワールド座標系)
		D3DXVec3TransformCoord(&pCBufEveryFrame->Light, &vLightPos, &pCBufEveryFrame->View);

		// 定数バッファ�Bを更新
		cbChangesEveryObject* pCBufEveryObject = static_cast<cbChangesEveryObject*>(_renderer.GetShaderConstantBuffer(_shader, 2));
		// ワールド変換行列
		static float angle = 0.f;
		angle += _frameRateController.GetElapsedTime();
		D3DXMatrixRotationY(&pCBufEveryObject->World, angle);
		D3DXMatrixTranspose(&pCBufEveryObject->World, &pCBufEveryObject->World);

		float* pGlobalColor = reinterpret_cast<float*>(_renderer.GetShaderGlobalVariable(_shader, "color"));
		pGlobalColor[0] = 1.0f;
		pGlobalColor[1] = 1.0f;
		pGlobalColor[2] = 1.0f;
		pGlobalColor[3] = 1.0f;

		// ***************************************
		// IAに頂点バッファを設定
		_renderer.SetVertexBuffer(_vertices);
		// IAにインデックス・バッファを設定
		_renderer.SetIndexBuffer(_indices);
		// IAに入力レイアウト・オブジェクトを設定
		_renderer.SetInputLayout(_inputLayout);
		// IAにプリミティブの種類を設定
		pNativeDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

		// シェーダをデバイスに適用。
		_renderer.SetShader(_shader);
		_renderer.ApplyShader();

		_renderer.SetDefaultRenderTargets();

		_renderer.SetDefaultRasterizerState();
		_renderer.SetDefaultBlendState();
		_renderer.SetDefaultDepthStencilState();

		// ***************************************
		// 頂点バッファのデータをインデックス・バッファを使って描画する
		pNativeDevice->DrawIndexed(
				36, // 描画するインデックス数(頂点数)
				0,  // インデックス・バッファの最初のインデックスから描画開始
				0); // 頂点バッファ内の最初の頂点データから使用開始
	}
	bool CreateTexture()
	{
		auto_interface<ID3D10Device> pNativeDevice(_device.GetNativeDevice());

		HRESULT hRet;
		D3DX10CreateShaderResourceViewFromFile(pNativeDevice, _T("..\\Rakugaki_Direct3D10_dat\\img.jpg"), NULL, NULL, &_pTextureSRV, &hRet);
		if (FAILED(hRet))
		{
			return false;
		}

		return true;
	}
	bool CreateVertices()
	{
		auto_interface<ID3D10Device> pNativeDevice(_device.GetNativeDevice());
		
		// 頂点バッファ。
		struct Vertex initialVertexDatas[] = {
			{ D3DXVECTOR3(-1.0f,1.0f,-1.0f),	D3DXVECTOR3(0.0f,0.0f,0.0f) },
			{ D3DXVECTOR3(1.0f,1.0f,-1.0f),		D3DXVECTOR3(0.0f,0.0f,1.0f) },
			{ D3DXVECTOR3(1.0f,-1.0f,-1.0f), 	D3DXVECTOR3(0.0f,1.0f,0.0f) },
			{ D3DXVECTOR3(-1.0f,-1.0f,-1.0f),	D3DXVECTOR3(0.0f,1.0f,1.0f) },
			{ D3DXVECTOR3(-1.0f,1.0f,1.0f), 	D3DXVECTOR3(1.0f,0.0f,0.0f) },
			{ D3DXVECTOR3(1.0f,1.0f,1.0f),		D3DXVECTOR3(1.0f,0.0f,1.0f) },
			{ D3DXVECTOR3(1.0f,-1.0f,1.0f), 	D3DXVECTOR3(1.0f,1.0f,0.0f) },
			{ D3DXVECTOR3(-1.0f,-1.0f,1.0f),		D3DXVECTOR3(1.0f,1.0f,1.0f) },
		};
		
		_vertices = _device.CreateVertexBuffer(D3D10_USAGE_DEFAULT, 0, sizeof(Vertex), _countof(initialVertexDatas), initialVertexDatas);
		if (_vertices == VertexBufferHandle::INVALID)
			return false;
			
		// インデックスバッファ。
		UINT initialIndexDatas[] = {
			0,1,3,  1,2,3,  1,5,2,  5,6,2,  5,4,6,  4,7,6,
			4,5,0,  5,1,0,  4,0,7,  0,3,7,  3,2,7,  2,6,7
		};
			
		_indices = _device.CreateIndexBuffer(D3D10_USAGE_IMMUTABLE, 0, sizeof(UINT), _countof(initialIndexDatas), initialIndexDatas);
		if (_indices == IndexBufferHandle::INVALID)
			return false;

		// 入力レイアウト・オブジェクトの作成
		D3D10_INPUT_ELEMENT_DESC layout[] = {
			{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, offsetof(Vertex, Position), D3D10_INPUT_PER_VERTEX_DATA, 0},
			{"COLOR",    0, DXGI_FORMAT_R32G32B32_FLOAT, 0, offsetof(Vertex, Color), D3D10_INPUT_PER_VERTEX_DATA, 0}
		};
		
		_inputLayout = _device.CreateInputLayout(
			layout,
			_countof(layout),
			_shader
			);
		if (_inputLayout == InputLayoutHandle::INVALID)
		{
			return false;
		}
		
		return true;
	}
	bool CreateSprite()
	{
		auto_interface<ID3D10Device> pNativeDevice(_device.GetNativeDevice());
		HRESULT hRet = D3DX10CreateSprite(pNativeDevice, 128, &_pSprite);
		if (FAILED(hRet))
		{
			return false;
		}

		D3DXMATRIX m;
		//D3DXVECTOR3 vEye(0.0f, 0.0f,  3.0f);	// 視点(カメラの位置)
		D3DXVECTOR3 vEye(0.0f, 0.0f,  -3.0f);	// 視点(カメラの位置)
		D3DXVECTOR3 vAt(0.0f, 0.0f,  0.0f);	// 注視点
		D3DXVECTOR3 vUp(0.0f, 1.0f,  0.0f);		// カメラの上方向

		D3DXMatrixLookAtLH(&m, &vEye, &vAt, &vUp);
		_pSprite->SetViewTransform(&m);

		return true;
	}