親父PGがゲームを作り始めるスレッド
■ このスレッドは過去ログ倉庫に格納されています
0013親父PG
04/03/30 12:47ID:nbxm21Tx偉そうな事を言える立場ではないですが、書き込みの内容を拝見するに 基本的なプログラムの技術をお持ちだと思いますので、ますはSDKサンプルの
ライブラリを見てDIRECTXの初期化とWINSOWSループあたりを見てみると良いのではないでしょうか?
WINDOWSのサンプルは描画速度はマシン速度(環境)に依存しています。
このままでは定期的な処理ができないので、PeekMessage周りを調べて定期的タイマーで特定の処理を呼び出すようなものを作ってみてはどうでしょうか?
while( WM_QUIT != msg.message )
{
if( m_bActive && m_pd3dDevice != NULL ){
if ( tTake==FALSE ){
QueryPerformanceCounter( ( LARGE_INTEGER * )&sTIME );//時間計測開始
FSP60call();//同期して動かすものはここで
}
FSP60nonSYNCcall();//何か出来ることあればやってしまおう
}
th_GetandPeekMessage( NULL );//Peek Message func
if( bGotMsg!=TRUE ){
if( m_bDeviceLost ){
// Yield some CPU time to other processes
Sleep( 100 ); // 100 milliseconds
}
if( m_bActive && m_pd3dDevice != NULL ){
if( FAILED( Render3DEnvironment() ) )SendMessage( m_hWnd, WM_CLOSE, 0, 0 );
QueryPerformanceCounter( ( LARGE_INTEGER * )&eTIME );// 計測終了
DWORD wTIME;
wTIME=( DWORD )16666;
if ( ( eTIME.LowPart - sTIME.LowPart )>wTIME ){
tTake=FALSE;
}else {tTake=TRUE;}//endof if
}
}
私が自作した部分ですが、サンプルのソースに試行錯誤を繰り返しこのような形になりました。
■ このスレッドは過去ログ倉庫に格納されています