[ create a new paste ] login | about

Link: http://codepad.org/EzGY0YtL    [ raw code | output | fork ]

C++, pasted on May 8:
//---------------------------------
//宣言部
//---------------------------------
class DxGame
{
//パブリックプロパティ
public:
	bool IsError;

//プロテクテッドプロパティ
protected:
	Logger* logger;										//ログ出力用クラス
	CComPtr<ID3D11Device> device;						//デバイス
	CComPtr<ID3D11DeviceContext> context;				//デバイスコンテキスト
	D3D_FEATURE_LEVEL featureLevel;						//アダプタ(ビデオカード)のDirectX対応バージョン
	CComPtr<IDXGISwapChain> swapChain;					//スワップチェイン
	CComPtr<ID3D11RenderTargetView> renderTargetView;	//描画ターゲット
	CComPtr<ID3D11DepthStencilView> depthStencilView;	//深度ステンシルバッファ

//内部プロパティ
private:
	CComPtr<IDXGIAdapter> adpter;						//アダプタ(ビデオカード)
	CComPtr<IDXGIFactory> factory;						//ファクトリオブジェクト

//パブリックメソッド
public:
	DxGame(HWND hWnd);
	virtual void OnRender();
	virtual void OnReSize(WPARAM wParam,LPARAM lParam);
 	virtual void OnKeyDown(WPARAM wParam, LPARAM lParam);
	~DxGame(void);

//内部メソッド
private:
	void initDirectXCompornent(HWND hWnd);	//DirectXの初期化
};

//---------------------------------
//描画部(デバッグ中に消されて行ったコメント達)
//---------------------------------
void DxGame::OnRender()
{
	//float backColor[] = { 0.0f, 0.0f, 1.0f ,1.0f };
	//this ->context ->ClearRenderTargetView(this ->renderTargetView,backColor);

	//this ->swapChain ->Present(0,0);
}

//---------------------------------
//DirectXの初期化
//---------------------------------
void DxGame::initDirectXCompornent(HWND hWnd)	
{
    IDXGIDevice1* pDXGIDev = NULL;

	ID3D11Device* pDevice = NULL;
	D3D_FEATURE_LEVEL featureLevel;
	ID3D11DeviceContext* pDeviceContext = NULL;
	
	IDXGIAdapter* pDXGIAdapter = NULL;
	IDXGIFactory* pDXGIFactory = NULL;
	IDXGISwapChain* pDXGISwpChain = NULL;
 
    HRESULT hr;
    RECT Rect;
 
    //--------------------------------------------------------------------
    // ウィンドウのクライアント領域取得
    //--------------------------------------------------------------------
    GetClientRect( hWnd, &Rect );
 
    //--------------------------------------------------------------------
    // 初期化順のテーブル
    //--------------------------------------------------------------------
    D3D_FEATURE_LEVEL FeatureLevels[] = {
        D3D_FEATURE_LEVEL_11_0,        // DirectX11対応GPU
        D3D_FEATURE_LEVEL_10_1,        // DirectX10.1対応GPU
        D3D_FEATURE_LEVEL_10_0,        // DirectX10対応GPU
        D3D_FEATURE_LEVEL_9_3,        // DirectX9/ShaderModel3対応GPU
        D3D_FEATURE_LEVEL_9_2,        // DirectX9/ShaderModel2対応GPU
        D3D_FEATURE_LEVEL_9_1,        // DirectX9/ShaderModel2対応GPU
    };
 
    //--------------------------------------------------------------------
    // デバイスの生成
    //--------------------------------------------------------------------
    hr = D3D11CreateDevice(
        NULL,                                                // 生成するアダプター
        D3D_DRIVER_TYPE_HARDWARE,                            // ハードウェアデバイス
        NULL,                                                // ソフトウェアデバイスのモジュール
        0,//D3D11_CREATE_DEVICE_DEBUG,                        // フラグ
        FeatureLevels,                                        // デバイスの初期化順ハードウェアテーブル
        sizeof(FeatureLevels) / sizeof(D3D_FEATURE_LEVEL),    // ↑のテーブルの数
        D3D11_SDK_VERSION,                                    // SDKのバージョン
        &pDevice,                                            // デバイス格納先
        &featureLevel,                                    // 初期化できたデバイス格納先
        &pDeviceContext );                                // デバイスコンテキスト格納先
	if FAILED( hr )
	{
		hr = D3D11CreateDevice(
        NULL, 
		D3D_DRIVER_TYPE_REFERENCE,
        NULL,
        0,//D3D11_CREATE_DEVICE_DEBUG,
        FeatureLevels,
        sizeof(FeatureLevels) / sizeof(D3D_FEATURE_LEVEL),
        D3D11_SDK_VERSION,
        &pDevice,
        &featureLevel,
        &pDeviceContext );
	}
    if FAILED( hr )
    {
        //MessageBox( hWnd, "デバイスの生成に失敗しました", "D3D11CreateDevice", MB_ICONSTOP );
        goto EXIT;
    }
 
    //--------------------------------------------------------------------
    // デバイスからIDXGIDevice1を取得して
    // そこからアダプターとファクトリーを取得
    //--------------------------------------------------------------------
    hr = pDevice->QueryInterface( __uuidof(IDXGIDevice1), (void**)&pDXGIDev );
    if FAILED( hr )
    {
        //MessageBox( hWnd, "IDXGIDevice1の取得に失敗しました", "QueryInterface", MB_ICONSTOP );
        goto EXIT;
    }
 
    // アダプター取得
    hr = pDXGIDev->GetAdapter( &pDXGIAdapter );
    if FAILED( hr )
    {
        //MessageBox( hWnd, "IDXGIAdapterの取得に失敗しました", "IDXGIDevice1::GetAdapter", MB_ICONSTOP );
        goto EXIT;
    }
 
    // ファクトリー取得
    hr = pDXGIAdapter->GetParent( __uuidof(IDXGIFactory), (void**)&pDXGIFactory );
    if FAILED( hr )
    {
        //MessageBox( hWnd, "IDXGIFactoryの取得に失敗しました", "IDXGIAdapter::GetParent", MB_ICONSTOP );
        goto EXIT;
    }
 
    //--------------------------------------------------------------------
    // スワップチェイン用のパラメーター
    //--------------------------------------------------------------------
	DXGI_SWAP_CHAIN_DESC swapChainDesc;
    swapChainDesc.BufferDesc.Width                    = Rect.right - Rect.left;                    // バックバッファの横
    swapChainDesc.BufferDesc.Height                    = Rect.bottom - Rect.top;                    // バックバッファの縦
    swapChainDesc.BufferDesc.Format                    = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;            // バックバッファのフォーマット
    swapChainDesc.BufferDesc.RefreshRate.Denominator    = 1;                                        // リフレッシュレートの分子
    swapChainDesc.BufferDesc.RefreshRate.Numerator    = 60;                                        // リフレッシュレートの分母
    swapChainDesc.BufferDesc.Scaling                    = DXGI_MODE_SCALING_UNSPECIFIED;            // スキャンラインのパラメーター
    swapChainDesc.BufferDesc.ScanlineOrdering            = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;        // スキャンラインのパラメーター
    swapChainDesc.SampleDesc.Count                    = 1;                                        // マルチサンプルのカウント
    swapChainDesc.SampleDesc.Quality                    = 0;                                        // マルチサンプルの品質
    swapChainDesc.BufferUsage                            = DXGI_USAGE_RENDER_TARGET_OUTPUT;            // バックバッファのフラグ
    swapChainDesc.BufferCount                            = 3;                                        // バックバッファ数
    swapChainDesc.OutputWindow                        = hWnd;                                        // 関連付けるウィンドウのハンドル
    swapChainDesc.Windowed                            = 1;                                        // ウィンドウモードで起動するか否か
    swapChainDesc.SwapEffect                            = DXGI_SWAP_EFFECT_DISCARD;                    // 画面更新の方法
    swapChainDesc.Flags                                = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;    // スワップチェインのフラグ
 
    //--------------------------------------------------------------------
    // スワップチェインをデバイスから作成する
    //--------------------------------------------------------------------
    hr = pDXGIFactory->CreateSwapChain( pDevice, &swapChainDesc, &pDXGISwpChain );
    if FAILED( hr )
    {
        //MessageBox( hWnd, "スワップチェインの生成に失敗しました", "CreateSwapChain", MB_ICONSTOP );
        goto EXIT;
    }
 
    //--------------------------------------------------------------------
    // 全初期化処理を突破した
    //--------------------------------------------------------------------
 
EXIT:
    SAFE_RELEASE( pDXGIDev );

	this ->device.Attach(pDevice);
	this ->context.Attach(pDeviceContext);
	this ->adpter.Attach(pDXGIAdapter);
	this ->factory.Attach(pDXGIFactory);
	this ->swapChain.Attach(pDXGISwpChain);
	
	return;

}

DxGame::~DxGame(void)
{

	//DirectX解放
	BOOL isFullScreen = FALSE;
	this ->swapChain ->GetFullscreenState(&isFullScreen,NULL);
	if(isFullScreen)
	{
		this ->swapChain ->SetFullscreenState(!isFullScreen,NULL);
	}
	this ->context ->ClearState();

	this ->logger ->Write(_T("解放処理\n"));

	delete this ->logger;
	
	/* スマートポインタ未使用時の解放処理
	SAFE_RELEASE(this ->depthStencilView);
	SAFE_RELEASE(this ->renderTargetView);
	SAFE_RELEASE(this ->swapChain);
	SAFE_RELEASE(this ->factory);
	SAFE_RELEASE(this ->adpter);
	SAFE_RELEASE(this ->device);
	SAFE_RELEASE(this ->context);
	*/
	
	
}


Output:
1
2
Line 12: error: ISO C++ forbids declaration of 'Logger' with no type
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: