> ブレンドモードを毎回指定した方が描画が早くなるのでしょうか?
いえ、毎回指定しない方が高速です
試しに以下のようなテストプログラムを組んで計測してみました
( 実行するときは計測しない方のプログラムをコメントアウト )
#include "DxLib.h"
#define Loops 60000
#define trans TRUE
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int img1 ;
int FPS ;
int FrameCounter ;
LONGLONG Time ;
LONGLONG StartTime ;
// ウィンドウモードで起動
ChangeWindowMode( TRUE ) ;
// VSync待ちをしない
SetWaitVSyncFlag( FALSE ) ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1 ; // エラーが起きたら直ちに終了
}
// 画像を読み込み
img1 = LoadGraph( "16x16.bmp" ) ;
// 描画先を売ら画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 変数の初期化
FPS = 0 ;
FrameCounter = 0 ;
StartTime = GetNowHiPerformanceCount() ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面の初期化
ClearDrawScreen() ;
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 );
for( int i=0 ; i<Loops ; i++ )
{
DrawGraph( 100, 100, img1, trans );
DrawGraph( 100, 200, img1, trans );
DrawGraph( 100, 300, img1, trans );
DrawGraph( 100, 400, img1, trans );
}
/*
for( int i=0 ; i<Loops ; i++ )
{
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 );
DrawGraph( 100, 100, img1, trans );
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 );
DrawGraph( 100, 200, img1, trans );
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 );
DrawGraph( 100, 300, img1, trans );
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 );
DrawGraph( 100, 400, img1, trans );
}*/
// FPSの表示
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "FPS:%d", FPS ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
// FPS処理
FrameCounter++;
Time = GetNowHiPerformanceCount() ;
if( Time - StartTime >= 1000000 )
{
StartTime = Time ;
FPS = FrameCounter ;
FrameCounter = 0 ;
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
縦横16ピクセルの画像を使用して載せていただいたプログラムを片方づつ試してみたのですが、手元の環境では
196FPS : SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ); を最初に一回だけ
175FPS : DrawGraph の前に毎回 SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ); を実行
と、SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ); を最初に一回だけ実行した場合の方が高速でした
よろしければ TSさんの環境でも SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ); を最初に一回だけ実行した
場合の方が高速に実行されるか試してみてください m(_ _)m
// 16x16.bmp はこちらです
https://dxlib.xsrv.jp/temp/16x16.bmp