ウィンドウモードの切り替え方。 – プログラミング – Home

ウィンドウモードの切り替え方。
 
通知
すべてクリア

ウィンドウモードの切り替え方。


高嶺
 高嶺
(@高嶺)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

VC++で、ゲーム中にウィンドウをフルスクリーンとウィンドウモードの切り替えを行い
たいのですが、良く分かりません。

初期化の手順としては

ウィンドウモードの場合の→
・協調レベルの設定
・プライマリサーフェイスの作成
・バックサーフェイスの作成。

フルスクリーンの場合→
・協調レベルの設定
・現在のディスプレイモード取得
・使用したいディスプレイモード設定
・ディスプレイモード列挙
・ディスプレイモード設定
・プライマリサーフェイスの作成
・バックサーフェイスの作成

でやっているのですが上手くいかなくて…。

ご存知の方がいらしたら教えてください。宜しくお願いします。


引用解決済
トピックタグ
リジェ
 リジェ
(@リジェ)
ゲスト
結合: 19年前
投稿: 5
 

DirectXを使っているのかいないのか、まずこの点を明確にてくだい。
協調レベルやサーフェイスという言葉から、使っていると思うのですが、
バージョンが明記されてないので、答えようがありません。


返信引用
高嶺
 高嶺
(@高嶺)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

説明不足で申し訳ありませんでした。
DirectX7を使ってゲームを作成しています。
DirectX8以降でもゲームを作成したいと思っているので
出来れば参考になる本とかも教えてくださると助かります。
宜しくお願いします。


返信引用
リジェ
 リジェ
(@リジェ)
ゲスト
結合: 19年前
投稿: 5
 

// 以下、DirectX9 でフルスクリーンにするコードです
// 重要なのは、Resetを呼び出す前にオブジェクトを破棄る点です

void Change(LPDIRECT3DDEVICE9 lpDevice, int nWidth, int nHeight, BOOL
bWindowMode)
{
D3DPRESENT_PARAMETERS param;

ZeroMemory(&param, sizeof(param));

param.SwapEffect = D3DSWAPEFFECT_DISCARD;

param.Windowed = bWindowMode;

if (bWindowMode) {
param.BackBufferFormat = D3DFMT_UNKNOWN;
}
else {
param.BackBufferFormat = D3DFMT_X8R8G8B8;
param.BackBufferWidth = nWidth;
param.BackBufferHeight = nHeight;
}

lpDevice->TestCooperativeLevel();

// サーフェイスやスプライトなどを作っているならここに破棄するコードを書く

lpDevice->Reset(&param);

// サーフェイスやスプライトなど作り直すコードを書く

}

// 呼び出すときには以下のように

GetClientRect(hWnd, &rect);
Change(lpDevice, rect.right, rect.buttom, FALSE);
// FALSEはフルスクリーンの意味

参考になる本・・・、分からないです
ごめんなさい


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました