久しぶりに質問します。
DXライブラリを使用して、作業中背景で動く何かを作ろうと考えています。(スクリーンセーバー的な)
そこで画面サイズを取得して、隠し関数を使用したところCPU使用率がほぼ100%になり困っています。
► スポイラーを表示
コード:
#include "DxLib.h"
//----------------------------------------------------------------------------//
// 関数名 : MainLoop()
// 機能概要: ゲームメインループ
//----------------------------------------------------------------------------//
int MainLoop()
{
if ( ProcessMessage() != 0 ) return -1; // プロセス処理がエラー時-1
if ( ClearDrawScreen() != 0 ) return -1; // 画面クリア処理がエラー時-1
return 0;
}
//********************************************************************************//
// ◎メイン関数
//********************************************************************************//
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int SCREEN_X = GetSystemMetrics(SM_CXSCREEN); // 横幅
int SCREEN_Y = GetSystemMetrics(SM_CYSCREEN); // 縦幅
// 初期設定処理
if ( SetUseBackBufferTransColorFlag( TRUE ) != 0 // ウインドウの透過色モード アクティブ時CPU使用率100%
|| ChangeWindowMode( TRUE ) != DX_CHANGESCREEN_OK // ウィンドウモード
|| SetGraphMode( SCREEN_X, SCREEN_Y, 32 ) != 0 // 画面設定
|| SetAlwaysRunFlag( TRUE ) != 0 // 非アクティブでも処理 非アクティブ時CPU使用率100%
|| DxLib_Init() != 0 // DXライブラリ初期化
|| SetDrawScreen( DX_SCREEN_BACK ) != 0 // 裏画面セット
){
MessageBox( NULL, _T("ライブラリの初期化に失敗しました"), _T("エラー"), MB_OK );
return -1;
}
// メインループ
while ( MainLoop() == 0 ){
ScreenFlip(); // 裏画面データを表画面へ反映
}
DxLib_End();
return 0 ;
}
試してみたことは、FPSを30まで落としてみましたがCPU使用率はほぼ100%でした... orz
質問は
・環境依存でしょうか?
・CPU使用率を下げる方法はありますか?
・そもそもどこかおかしいでしょうか?
自分の環境は
・VC++2010
・DXLib Ver 3.10c
OS:Microsoft Windows 7 Home Premium 64-bit SP1
CPU:Intel Core i7
メモリ:8.00 GB になります。
よろしくお願いします(_)