ナナエフ

同人ゲームサークル『7-FIELD』制作ブログ  -ゲーム制作やイベント参加などの活動情報 + 雑記-

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

for文とwhile文の処理速度について<C#, DxLib>

 
tetsuwoです。 【 twitter

今作「露草ユーフォリア」は、前作の薄鈍と同じく、C#・ManagedDirectX で作成しております。

しかし、Managed では実装が難しい部分があったため、DirectX 開発で有名なライブラリ群「DxLib」を試そうとした結果。
 
 
■DxLib とは

  【 DXライブラリ置き場 】 - 公式サイト

  【 DXライブラリ 】 - Wikipedia

    C++用に開発した、無料のコンピュータゲーム開発用ライブラリである。
    
    ライブラリ自体の著作権は開発者の山田 巧が保持しているが、ライブラリのソースコードは公開されている。
    
    (中略)
    
    ライブラリ独特の仕様が少なく自由度が高いため、ゲームジャンルや
    
    開発規模に制約されないことを特徴に上げている。

    
    上記では「C++用」と書かれておりますが、C#用も同様に公開されているため、そちらで実装。


■動作確認

  VisualStudio にダウンロードした DLL を読み込ませ、早速ゲーム用のループを書きます。
  
  ただ周回ごとにウィンドウの描画を初期化するだけです。DXで言うところの device.Clear。


─<実装内容>──────────────────────

static void Main()
{
// ウィンドウモードに切り替え
//DX.ChangeWindowMode(DX.TRUE);

// DXライブラリの初期化に失敗した場合は終了
if (DX.DxLib_Init() == -1) return;

for(int count = 0; ; count++)
{

// 描画を初期化
DX.ClearDrawScreen();

// CPU占有しないよう制限。
System.Threading.Thread.Sleep(10);
}
return;
}
──────────────────────────────

コレだけ。

コンパイルエラーもないため動かしてみると、数秒でフリーズ。

四苦八苦した結果、ループを for → while に変更するだけで通りました。

─<変更内容>──────────────────────

int count = 0;
while (loop == true)
{
count++;

// 描画を初期化
DX.ClearDrawScreen();

// CPU占有しないよう制限。
System.Threading.Thread.Sleep(10);
}

──────────────────────────────

for・while について、簡単に仕様を調べてみましたが

やはりプログラムがとまってしまうほどの差異はない様子。


原因や、他言語でも同じ事になるかは分かりませんが

もしこれから使用する方は頭にとどめておくと良いかもしれません。
 
スポンサーサイト
  1. 2013/01/24(木) 09:30:58|
  2. 制作
  3. | トラックバック:0

トラックバック

トラックバック URL
http://7fblog.blog.fc2.com/tb.php/144-d29cc466
この記事にトラックバックする(FC2ブログユーザー)

カウンター

プロフィール

akinasi, tetsuwo

Author:akinasi, tetsuwo
FC2ブログへようこそ!

検索フォーム

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

告知 (63)
制作 (88)
ソフト紹介 (19)
素材紹介 (10)
言外 (7)
雑記 (361)
ナナエ (29)

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。