トップページ > 記事閲覧
ChangeFontによる描画速度低下について
名前:三枚おろし大根 日時: 2016/08/14 23:55

初めまして。対応していただきたいバグ(?)があり、報告に上がりました。 (Ver 3.16dでの現象です) ChangeFontで、 ・無効な名前を指定した場合 ・リソースから読み出したフォントを使用した場合 文字描画速度が著しく低下する現象が発生しました。 DrawStringで半角26文字程度の物を100回For文で描いてみたのですが、 20~30ミリ秒もかかり、まともに動きませんでした。 (正常な状態だと3400回でやっと16ミリに届きそうなくらいでした。因みに、描画なしでは0.5ミリ秒です) 申し訳ありませんが、対応よろしくお願いします。
メンテ

Page: 1 |

Re: ChangeFontによる描画速度低下について ( No.1 )
名前:三枚おろし大根 日時:2016/08/15 00:25

再現用のプログラムを用意しました。 #include "DxLib.h" #include "Resource.h" //リソース内のフォントを読み込むクラス。 //※ 読み込んだフォントはこのオブジェクトの寿命までは有効となります。 //※ リソースの種類は必ず【Font】を使用してください。 //※ このクラスのヘッダ・ソースはリソースファイルと同じディレクトリに置いてください。 class ResourceFont { HANDLE FontHandle = nullptr; public: ResourceFont(LPCSTR resource_name, HINSTANCE hInstance = 0) { DWORD font_num = 0; HRSRC hResource = FindResource(hInstance, resource_name, RT_FONT); HANDLE hBuf = LoadResource(hInstance, hResource); LPVOID lpFontImage = LockResource(hBuf); FontHandle = AddFontMemResourceEx(lpFontImage, SizeofResource(0, hResource), 0, &font_num); if (!FontHandle) MessageBox(0, "フォント読み込みに失敗しました。\nresource_nameには\nMAKEINTRESOURCE(**リソース名**)\nを使用してください。", "ResourceFont", MB_OK | MB_ICONHAND); } ~ResourceFont() { RemoveFontMemResourceEx(FontHandle); } }; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(true); SetDoubleStartValidFlag(true); SetWaitVSyncFlag(false); SetMainWindowText("EXPERIENCE_APP"); if (DxLib_Init() == -1) return 0; //ResourceFont primary_font(MAKEINTRESOURCE(IDR_FONT1)); //ChangeFont("ほげほげふぉんと"); ProcessMessage(); LONGLONG start = GetNowHiPerformanceCount(); for (int i = 0; i < 1000; i++) DrawString(200,200,"fooooooooo\(^o^)/hogeeeee",GetColor(255,255,255)); LONGLONG end = GetNowHiPerformanceCount(); printfDx("経過時間:%lldμSec\n", end - start); if((end-start)/16000 > 0) printfDx("16msオーバー!!"); while (!ProcessMessage()); DxLib_End(); return 0; }
メンテ
Re: ChangeFontによる描画速度低下について ( No.2 )
名前:管理人 日時:2016/08/15 03:20

ご指摘ありがとうございます 先ほど書き込みを拝見して作業時間が確保できなかったのでとりあえず「無効な名前を指定した場合」についてのみ 文字描画速度が著しく低下するバグを修正しました 「リソースから読み出したフォントを使用した場合」についても直っている可能性がありますので、 よろしければこちらの修正版をお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: ChangeFontによる描画速度低下について ( No.3 )
名前:三枚おろし大根 日時:2016/08/15 08:30

無効な場合だけでなく、 リソースから読み出したフォントでも正常になりました。 迅速な対応ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存