フェードアウト処理後画面が真っ暗なまま
Posted: 2012年5月06日(日) 01:00
龍神録のプロジェクトを用いてmain.cppにタイトル描画の処理を追加したのですが、フェードアウト処理の終了後メインプログラムの処理が始まるのですが画面が真っ暗なままです。
音楽は流れるのですが画面は真っ暗です。
自分で弾を撃ったり、必殺技(?)を使用したり、自分が消滅したり、敵が消滅したりするなど、新たな画像を描画する処理が入ると正常な画面が表示されます。
フェードアウト処理を無くし、フェードイン処理だけの場合は正常に動作しました。
環境はWindows7 VC++ 2008EEです。
音楽は流れるのですが画面は真っ暗です。
自分で弾を撃ったり、必殺技(?)を使用したり、自分が消滅したり、敵が消滅したりするなど、新たな画像を描画する処理が入ると正常な画面が表示されます。
フェードアウト処理を無くし、フェードイン処理だけの場合は正常に動作しました。
環境はWindows7 VC++ 2008EEです。
#define GLOBAL_INSTANCE
#include "../include/GV.h"
#include "../../../include/DxLib.h"
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
GetHitPadStateAll(); //現在のパッド入力処理を行う
return 0;
}
int i ;
int GraphHandle ;
char KeyBuf[ 256 ] ;
void title_in(){
GraphHandle = LoadGraph( "../dat/img/title.png" ); // 画像を描画する
SetDrawScreen( DX_SCREEN_BACK ) ;
WaitTimer( 1000 ) ;
for( i = 0 ; i < 255 ; i+=2 ) // フェードイン処理
{
SetDrawBright( i , i , i ) ; // 描画輝度をセット
DrawGraph( 0 , 0 , GraphHandle , FALSE ) ; // グラフィックを描画
ScreenFlip() ;
}
}
void title(){
LoadGraphScreen( 0 , 0 , "../dat/img/title_start.png" , TRUE ) ;// 画像を描画する
if (CheckHitKey( KEY_INPUT_RETURN ))
func_state=4;
}
void title_out(){
GraphHandle = LoadGraph( "../dat/img/title.png" ); // 画像を描画する
SetDrawScreen( DX_SCREEN_BACK ) ;
WaitTimer( 0 ) ;
for( i = 0 ; i < 255 ; i+=5 ) // フェードアウト処理
{
SetDrawBright( 255 - i , 255 - i , 255 - i ) ; // 描画輝度をセット
DrawGraph( 0 , 0 , GraphHandle , FALSE ) ; // グラフィックを描画
ScreenFlip() ;
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
if (SetGraphMode(800, 600, 32)==-1) {return -1;} // 画面解像度変更
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
GetHitKeyStateAll( KeyBuf ) ; // すべてのキーの状態を得る
while(ProcessLoop()==0){//メインループ
music_ini();
switch(func_state){
case 0://初回のみ入る処理
load(); //データロード
first_ini();//初回の初期化
func_state=1;
break;
case 1://STGを始める前に行う初期化
ini();
load_story();
func_state=2;
break;
case 2:
title_in();
func_state=3;
break;
case 3:
title();
break;
case 4:
title_out();
func_state=100;
break;
case 100://通常処理
enter_func_tm("最初");
calc_ch(); enter_func_tm("キャラ計算");
ch_move(); enter_func_tm("キャラ移動");
cshot_main(); enter_func_tm("自機ショットメイン");
enemy_main(); enter_func_tm("敵処理メイン");
boss_shot_main();enter_func_tm("ボスショットメイン");
shot_main(); enter_func_tm("ショットメイン");
out_main(); enter_func_tm("当たり判定");
effect_main(); enter_func_tm("エフェクトメイン");
calc_main(); enter_func_tm("計算メイン");
graph_main(); enter_func_tm("描画メイン");
bgm_main(); enter_func_tm("BGMメイン");
if(boss.flag==0)
stage_count++;
break;
default:
printfDx("不明なfunc_state\n");
break;
}
music_play(); enter_func_tm("音楽再生");
fps_wait(); enter_func_tm("待機した時間",1);
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
count++;
}
DxLib_End();//DXライブラリ終了処理
return 0;
}