トップページ > 記事閲覧
DrawModiStringでフリーズ
名前:スパ 日時: 2017/12/26 10:05

#define DXLIB_VERSION 0x3190 #define DXLIB_VERSION_STR_T _T( "3.19 " ) #define DXLIB_VERSION_STR_W L"3.19 " VisualStudio2010用.slnのtest.cpp LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ; この直下に以下の行を追加するとフリーズします DrawModiString(1, 1, 100, 1, 100, 100, 1, 100, 0xffffffff, 0, 0, "a"); Fつきも同様のようです 別環境(件の修正版Libで作ってるゲーム上だと)たまにチラつきながら動いたりしますが高確率で落ちます。 よろしくお願いいたします。
メンテ

Page: 1 |

Re: DrawModiStringでフリーズ ( No.1 )
名前:スパ 日時:2017/12/26 22:14

すこしトピの内容とずれてきますが、 最終的な目的は、CreateDXFontDataでフォントデータを用意し、それをロードし、 その中のテクスチャの文字ごとの座標(or UV)とテクスチャハンドルを取得して こちらからシェーダーなりを通して好きなやり方で描画できるようになりたいと思っています。 可能でしょうか? (その前段階の実験で4点指定できるDrawModiStringを試したら躓いたという感じで、 この自由変形自体はあまり重要視していません) また、CreateDXFontDataに関する報告ですが、 MS 明朝シフトJIS文字作成.bat をダブルクリックすると出力されるファイルが異様に小さく、文字も0個と表示されています。 MS 明朝データ作成.bat はそこそこデカイファイルが出力され、成功しているように見えます。 トピ内容が煩雑になってしまって申し訳ありません。 分けたほうがよかったでしょうか よろしくお願いします。
メンテ
Re: DrawModiStringでフリーズ ( No.2 )
名前:管理人 日時:2017/12/27 01:37

> LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ; > この直下に以下の行を追加するとフリーズします >  > DrawModiString(1, 1, 100, 1, 100, 100, 1, 100, 0xffffffff, 0, 0, "a"); うーん、私の環境では問題なく動作しました・・・ フリーズするとのことですが、それはタスクマネージャから強制終了しなくてはいけない状態、ということでしょうか? > 別環境(件の修正版Libで作ってるゲーム上だと)たまにチラつきながら動いたりしますが高確率で落ちます。 落ちる、というのはソフトが強制終了するということでしょうか? あと、もしよろしければ落ちた際の Log.txt の中身を丸ごとこちらに掲示板に貼り付けていただけないでしょうか? m(_ _;m > 最終的な目的は、CreateDXFontDataでフォントデータを用意し、それをロードし、 > その中のテクスチャの文字ごとの座標(or UV)とテクスチャハンドルを取得して > こちらからシェーダーなりを通して好きなやり方で描画できるようになりたいと思っています。 >  > 可能でしょうか? 残念ですが不可能です なぜなら DrawStringToHandle などで文字を描画するときまで文字の情報はテクスチャに転送されないからです また、テクスチャは単なるキャッシュとして使用しているため、描画するたびにテクスチャ上のどこに 文字が転送されるかはその時々によって変化します なので、自前のシェーダーを使用して文字を描画されたいということでしたら、 < 初期化時に1回だけ行う処理 >   1.MakeARGB8ColorSoftImage で文字列を転送するソフトウェアイメージを作成   2.CreateGraphFromSoftImage を使用して1で作成したソフトウェアイメージからグラフィックハンドルを作成 < 実行時に行う処理 >   3.描画したい文字列を BltStringSoftImage や BltStringSoftImageToHandle で1で作成したソフトウェアイメージに転送   4.1で作成したソフトウェアイメージを2で作成したグラフィックハンドルに ReCreateGraphFromSoftImage で転送   5.SetUseTextureToShader に 2で作成したグラフィックハンドルをセットして DrawPolygon2DToShader で描画 という方法を採る必要があります 因みに上記手順の 3と4の処理は重い処理なので、同じ文字列を毎フレーム描画するような場合は最初の1回だけ 3と4の処理を行い、描画する文字列が変わるまでは毎フレーム 5の処理だけを行うようにする必要があります > また、CreateDXFontDataに関する報告ですが、 > MS 明朝シフトJIS文字作成.bat > をダブルクリックすると出力されるファイルが異様に小さく、文字も0個と表示されています。 すみません、現在正式公開されている最新バージョンの CreateDXFontData は少しバグっていて 正常にファイルが作成されない状態になっています m(_ _;m MS 明朝シフトJIS文字作成.bat の中身は CreateDXFontData.exe /F"MS 明朝" /B4 /S32 /AシフトJIS文字セット.txt /O"MS 明朝シフトJIS.dft" pause となっていますが、こちらのオプションに『/CSHIFTJIS』という記述を増やして CreateDXFontData.exe /CSHIFTJIS /F"MS 明朝" /B4 /S32 /AシフトJIS文字セット.txt /O"MS 明朝シフトJIS.dft" pause としていただければ現在公開されているバージョンの CreateDXFontData.exe でも正常なファイルが作成されますので、 よろしければお試しください m(_ _;m ( 次のバージョンでは /CSHIFTJIS の記述が無くても正常にファイルが作成されるようになります )
メンテ
Re: DrawModiStringでフリーズ ( No.3 )
名前:スパ 日時:2017/12/27 02:03

丁寧な対応ありがとうございます。 もろもろ明日みて、追記させていただきます
メンテ
Re: DrawModiStringでフリーズ ( No.4 )
名前:スパ 日時:2017/12/30 07:10

>うーん、私の環境では問題なく動作しました・・・ > >フリーズするとのことですが、それはタスクマネージャから強制終了しなくてはいけない状態、ということでしょうか? かなりやんちゃなことになります(フルスクリーン状態で停止不可能な音を出しながらタスクマネージャからも操作困難な状況になってしまいます) とはいえ、いままでの流れからしてやはり私個人のPCの問題が高そうですので、この件は一度保留とさせてください。 お手数おかけして申し訳ありません。 >残念ですが不可能です 了解いたしました。 Webで調べて実験してみましたがBMFontというツールでほぼ希望の状態が実現ができそうですのでそちらを組み込んでみようと思います。 実装方法の解説ありがとうございました。 (今回はスルーという形になってしまい申し訳ないです) またなにかありましたらよろしくお願いいたします。 よいお年を
メンテ

Page: 1 |

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

   クッキー保存