[過去ログ] Delphiゲームプログラミング相談室 (976レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
551(4): 名前は開発中のものです。 [sage] 04/07/24 05:11 ID:xpKa1okG(1) AAS
QD3を使ってのゲーム作成を始めました。
fpsなどの情報をTextOut()や、それに近いもので表示させようと思っています。
現行の処理(OnIdleにて):
D3DDevice.BeginScene();
PushSprite(); // BitMapを多数配置
Sxw := TSXTextWriter.Create();
Text[n] := Sxw.CreateStringTexture();
PushSprite(); // 上で作成した文字列のテクスチャをいくつか
D3DDevice.EndScene();
D3DDevice.Present();
Text[n].Free// 上で作成した文字列のテクスチャの解放
Sxw.Free;
のようにして、TSXTextWriterを使用していますが、
テキストのテクスチャ数が増えるに連れて、大変重たくなってしまいます。
きっともっと良い描画方法があると思うのですが、
メモリデバイスコンテキスト等も上手くいかず、苦戦しております。
何かヒントをいただけないでしょうか?
552(2): 名前は開発中のものです。 [sage] 04/07/24 20:45 ID:PnrKgcAc(1) AAS
>551
シーン描画毎にテクスチャとTSXTextWriterをクリエイトする意味あんの?
文字列に変化ある時に書き換えるだけじゃだめなんか。
553: 551 [sage] 04/07/25 03:26 ID:TtxXwPsH(1/3) AAS
>>552
ゲームのスコアを表示させているため、
かなりの頻度で文字列が変化してしまうもので…。
ですが、ご指摘の通り、TSXTextWriterは毎回生成・破棄する
必要がないため、FormCreate/Destroyに移動させました。
もしかしてTBitmap.Canvasとか使った方がいいんでしょうかね?
引き続き色々試してみようと思います。
555(1): 551 [sage] 04/07/25 14:40 ID:TtxXwPsH(2/3) AAS
>>554やっぱりそうですよね…。
でもそうやってみると、どうしてもリークしてしまうんです。
やり方がおかしいのかな_| ̄|○
・MainFormのprivateでText1: TDGTexture;を宣言。
・FormDestroyでText1.Free;
procedure OnIdle();
begin
:
Text1 := Sxw.CreateStringTexture();
PushSprite(Text1);
D3DDevice.Present();
// この辺りで何らかの解放処理が必要なのでしょうか。
:
end;
(今は、SXLibを見ながらTBitmapを使おうと模索中です。)
558: 551 [sage] 04/07/25 16:26 ID:TtxXwPsH(3/3) AAS
>>556-557
おあーぁぁー、Writeってそういうことだったんですね…。
メソッド名そのままの効果…何故気付かないのか私は_| ̄|○
これなら期待通りの動作をしてくれます!
> 別に文字列持っておいて変化したらWriteするようにする
CPU使用率が(一部)断然下がりました。
おかげさまで、描画系の作成に苦労しなくて済みそうです。
>>552,554(=556,557?)さんをはじめ、スレ住人皆さん、
ご教授いただき有難うございました<(_ _)>
QDmanual/ML/sampleの山|λ......
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s