Re: ライブラリのバージョンによっての処理の重さの違い ( No.1 ) |
- 名前:管理人 日時:2007/02/07 13:55
列さんどうも、DXライブラリの管理人です。
うーん、心当たりですか・・・・
DXライブラリは2のn乗以外のサイズの画像をVRAMを節約するために
ある条件に適合した場合一つの画像を複数のテクスチャに分割して使用する
ようになっているのですが(640x480 の画像の場合 1024x512 のテクスチャでは
無く、512x512 と 128x512 の二つのテクスチャに分割されます)、
もしかしたら 2.22b ではこの分割の機能をデフォルトでは切っていたかもしれません。
この分割するかどうかの設定は以下の関数で変更できますので
// 必要ならグラフィックの分割を行うかを設定する
int SetUseDivGraphFlag( int Flag );
これが原因かどうかは分かりませんが、宜しければ DxLib_Init の後にでも
SetUseDivGraphFlag( FALSE ); として、分割をしないようにしてみて下さい。
もし2のn乗以外のサイズの画像を使用している場合はVRAMは少々無駄に
使用される代わりに描画速度が速くなります。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.2 ) |
- 名前:列 日時:2007/02/07 18:52
ご返答ありがとうございます。
早速ためさせてもらいました。
前の状態より軽くなりましたが、
でもバージョン2.22bと比べると
まだ重いようなのです。
特に画像を大きく描画するときに
処理が重くなる傾向があるようなのです。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.3 ) |
- 名前:管理人 日時:2007/02/08 14:01
列さんどうも、DXライブラリの管理人です。
列さんの
> 特に画像を大きく描画するときに
> 処理が重くなる傾向があるようなのです。
というお言葉を切っ掛けに、一つ 2.22b よりもGPUの
ピクセル打ち(フィルタリング)の負荷が高くなっている変更点を一つ
見つけました。
機能追加に伴う変更でしたが、追加した機能を使用していなくても
以前より負荷が高くなってしまう条件分岐の甘さがありましたので
修正しました。
これが 2.22b より重い根本の原因かどうかは分かりませんが、宜しければ
修正版をお試しになってみてください。m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.4 ) |
- 名前:列 日時:2007/02/10 13:47
早速ためさせてもらいました、
以前のバージョンよりずっと軽くなってましたが、
2.22bと比べるとまだ重いようなのです。
グラフィックボードが弱いPCでためしているので、
描画関係が原因だと思うのですが、
確信はとれません。
実際、グラフィックが強いPCでためしてみたら、
処理落ちはしませんでした。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.5 ) |
- 名前:列 日時:2007/02/10 16:30
あと、最新のライブラリでスクリーンショットを
とってみたら、真っ黒な画像になってしまいました。
2.22bだと通常のスクリーンショットが取れます。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.6 ) |
- 名前:管理人 日時:2007/02/10 16:36
列さんどうも、DXライブラリの管理人です。
前回お渡ししたライブラリファイルは VisualC++ 6.0 でコンパイルした
ものでしたので、VisualStudio.NET2003 でコンパイルし直してみました。
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
DXライブラリの関数を沢山呼び出していられる場合は多少軽く
なると思いますので、宜しければお試しください。m(_ _)m
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.7 ) |
- 名前:管理人 日時:2007/02/10 16:43
> スクリーンショット
スクリーンショットとは SaveDrawScreen 関数を使用して描画中の
画面を保存することを指すのでしょうか?
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.8 ) |
- 名前:列 日時:2007/02/11 13:46
スクリーンショットはPirbtScreenを押して
とってみたのですが、
画像サイズはあっていたのですが、
黒一色の画像でした。
最新版をためさせていただきましたが、
やはり2.22bのほうが軽いのです。
こちらのほうでも色々あたってみたいと
思います。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.9 ) |
- 名前:管理人 日時:2007/02/13 14:16
列さんどうも、DXライブラリの管理人です。
私の環境では PrintScreen キーを押してのスクリーンショットも
正常にキャプチャすることが出来ました。何をしていると正常に
キャプチャ出来ないのかが分からないので(どのタイミングで何処から
キャプチャしているのかも謎ですし・・・)、申し訳ありませんが
キャプチャ専用ソフトを使ってみて下さい。m(_ _;m
2.22bの方が軽いという件ですが、現状どの位の差があるのでしょうか?
プログラム上では 2.23 の方が僅かに遅いのは確かなのですが・・・
(CPU負荷的には1%程の差ですが・・・)
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.10 ) |
- 名前:列 日時:2007/02/13 16:37
スクリーンショットは了解しました。
処理の重さの差ですが、
演出のカットインがはいると
2.22bだと処理落ちがなかったのですが、
最新版だと6〜12F落ちるようなのです。
カットインと通常のときの描画の違いですが、
通常の描画に加えて演出で、
640*480の画像を640*480で三枚描画してます。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.11 ) |
- 名前:管理人 日時:2007/02/14 15:26
列さんどうも、DXライブラリの管理人です。
うーん、カットインですか・・・
現在処理落ちが発生するタイミングで読み込まれている画像の
データサイズの合計は処理落ちが発生するPCに搭載されている
VRAMの容量よりも小さいでしょうか? それとも大きいでしょうか?
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.12 ) |
- 名前:列 日時:2007/02/14 22:00
グラフィックカードが弱いPCで
試していますので、
VRAMの容量より多いとおもわれます。
でも、高性能のグラフィックカードをつけたときも
つけてないときほどではないですが、
処理落ちはしました。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.13 ) |
- 名前:管理人 日時:2007/02/16 12:25
列さんどうも、DXライブラリの管理人です。
ご返答有難うございます。
> でも、高性能のグラフィックカードをつけたときも
> つけてないときほどではないですが、
> 処理落ちはしました。
高性能のグラフィックカードでも、以下のようなシンプルな
プログラムで 640x480 の画像を3枚描画しただけで
処理落ちが発生してしまうということでしょうか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Gr640x480, x, add;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 640x480 の画像を読み込み
Gr640x480 = LoadGraph( "640x480.bmp" );
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );
// メインループ(何かキーが押されたらループを抜ける)
x = 0;
add = 8;
while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 )
{
x += add;
if( x < 0 || x > 640 ) add = -add;
// 画面のクリア
ClearDrawScreen();
// 一枚だけ動かす
DrawGraph( 0, 0, Gr640x480, TRUE );
DrawGraph( 0, 0, Gr640x480, TRUE );
DrawGraph( x, 0, Gr640x480, TRUE );
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.14 ) |
- 名前:列 日時:2007/02/16 14:47
いえ、そういうわけではなく
通常のゲーム処理に640*480の画像を
三枚描画してます。
ほかに重い処理(ゲームの処理)をしているので
処理落ちはしょうがないのかもしれないですね。
2.23と2.22bの違いで
自分が使いたい機能は、ダイアログBOX中に
パットを認識する機能だけなので、
コンフィグEXEと実行EXEを分けてやれば
問題は解決するので、
そうしようかと考えています。
|
Re: ライブラリのバージョンによっての処理の重さの違い ( No.15 ) |
- 名前:管理人 日時:2007/02/19 12:12
列さんどうも、DXライブラリの管理人です。
> 2.23と2.22bの違いで
> 自分が使いたい機能は、ダイアログBOX中に
> パットを認識する機能だけなので、
> コンフィグEXEと実行EXEを分けてやれば
> 問題は解決するので、
> そうしようかと考えています。
了解です。
この問題を解決するには時間が掛かりそうですので、申し訳ありませんが
そうしてください。m(_ _;m
|