[過去ログ]
Delphiゲームプログラミング相談室 (976レス)
Delphiゲームプログラミング相談室 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
545: 名前は開発中のものです。 [sage] 04/06/21 17:33 ID:dfz266Vj > Timer_RenderはTTimerコンポーネントでIntervalは1で動かしています ( ゜д゜)カポーン http://echo.5ch.net/test/read.cgi/gamedev/1006249204/545
546: 544 [sage] 04/06/21 17:49 ID:hUNg5P7j 追伸、Idleで動作させても50FPS程度です。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/546
547: 名前は開発中のものです。 [sage] 04/06/21 20:26 ID:C5bKRRLU >>544 d3dpp.PresentationInterval:= D3DPRESENT_INTERVAL_IMMEDIATE; は? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/547
548: 544 [sage] 04/06/22 09:38 ID:yy2X6pb6 >>547 ありがとうございます。無事60FPS以上出ました。 ヘルプにフルスクリーンでしか意味ないようなこと書いていたので試してませんでした(^^; http://echo.5ch.net/test/read.cgi/gamedev/1006249204/548
549: 名前は開発中のものです。 [] 04/06/23 11:37 ID:175oP9wI >>548 60FPS以上いくと不安定になるVGAもあるみたいだから 注意してちょんまげ http://echo.5ch.net/test/read.cgi/gamedev/1006249204/549
550: 名前は開発中のものです。 [sage] 04/06/24 12:26 ID:WbJlnPwQ フルスクリーンとウィンドウの切り替えは、 D3DPresentParametersのWindowedを変更してデバイスをResetするだけでは駄目なんでしょうか。 上記の方法でやろうとすると、フルスクリーンからウィンドウになったときにタイトルバーが消えてしまいます。 FormのBorderStyleをbsNoneにしたような感じですが、この状態でBorderStyleを変更しても変化がありません。 正しく切り替えるにはどのようにしたらいいでしょうか。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/550
551: 名前は開発中のものです。 [sage] 04/07/24 05:11 ID:xpKa1okG 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を使用していますが、 テキストのテクスチャ数が増えるに連れて、大変重たくなってしまいます。 きっともっと良い描画方法があると思うのですが、 メモリデバイスコンテキスト等も上手くいかず、苦戦しております。 何かヒントをいただけないでしょうか? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/551
552: 名前は開発中のものです。 [sage] 04/07/24 20:45 ID:PnrKgcAc >551 シーン描画毎にテクスチャとTSXTextWriterをクリエイトする意味あんの? 文字列に変化ある時に書き換えるだけじゃだめなんか。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/552
553: 551 [sage] 04/07/25 03:26 ID:TtxXwPsH >>552 ゲームのスコアを表示させているため、 かなりの頻度で文字列が変化してしまうもので…。 ですが、ご指摘の通り、TSXTextWriterは毎回生成・破棄する 必要がないため、FormCreate/Destroyに移動させました。 もしかしてTBitmap.Canvasとか使った方がいいんでしょうかね? 引き続き色々試してみようと思います。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/553
554: 名前は開発中のものです。 [sage] 04/07/25 14:02 ID:y86X+J8o テクスチャの描画毎の生成破棄も相当コスト高いとおもうけど。 ふつうにあらかじめ確保したテクスチャにWriteすべきでね? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/554
555: 551 [sage] 04/07/25 14:40 ID:TtxXwPsH >>554 やっぱりそうですよね…。 でもそうやってみると、どうしてもリークしてしまうんです。 やり方がおかしいのかな_| ̄|○ ・MainFormのprivateでText1: TDGTexture;を宣言。 ・FormDestroyでText1.Free; procedure OnIdle(); begin : Text1 := Sxw.CreateStringTexture(); PushSprite(Text1); D3DDevice.Present(); // この辺りで何らかの解放処理が必要なのでしょうか。 : end; (今は、SXLibを見ながらTBitmapを使おうと模索中です。) http://echo.5ch.net/test/read.cgi/gamedev/1006249204/555
556: 名前は開発中のものです。 [sage] 04/07/25 15:18 ID:y86X+J8o >>555 ん?それだと >Text1 := Sxw.CreateStringTexture(); の部分で毎回テクスチャがクリエイトされちゃうじゃん。そりゃリークしまくるでしょ。 Writeすればっつーのは FormCreateでText1をクリエイトして >Sxw.Write(0,0,'Score',Text1); とでもすればっていうこと。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/556
557: 名前は開発中のものです。 [sage] 04/07/25 15:35 ID:y86X+J8o あ、言い忘れた。 当たり前だけど毎描画Writeするのも重いはず。 別に文字列持っておいて変化したらWriteするようにするのが普通だと思う。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/557
558: 551 [sage] 04/07/25 16:26 ID:TtxXwPsH >>556-557 おあーぁぁー、Writeってそういうことだったんですね…。 メソッド名そのままの効果…何故気付かないのか私は_| ̄|○ これなら期待通りの動作をしてくれます! > 別に文字列持っておいて変化したらWriteするようにする CPU使用率が(一部)断然下がりました。 おかげさまで、描画系の作成に苦労しなくて済みそうです。 >>552,554(=556,557?)さんをはじめ、スレ住人皆さん、 ご教授いただき有難うございました<(_ _)> QDmanual/ML/sampleの山|λ...... http://echo.5ch.net/test/read.cgi/gamedev/1006249204/558
559: 名前は開発中のものです。 [sage] 04/08/04 16:08 ID:ZmvuRdM9 初心者丸出しの質問ですいませんが ゲームのハイスコア(1位から10位ほど)を保存したいんですけど 何を使えばいいんでしょうか http://echo.5ch.net/test/read.cgi/gamedev/1006249204/559
560: 名前は開発中のものです。 [sage] 04/08/04 17:22 ID:WqrQethy tstringlist http://echo.5ch.net/test/read.cgi/gamedev/1006249204/560
561: 名前は開発中のものです。 [sage] 04/08/04 23:29 ID:5TXw5Lpo Quadruple Dを使ってゲーム作っているのですが、 画像の一部だけを描画するにはこの方法でいいのでしょうか? Scene.PushSprite( Vector2D(0,0), [ SXVertexSP(50,50, $FFFFFFFF, 0.0,0.0), SXVertexSP(100,50, $FFFFFFFF, 50/Texture.Width, 0.0), SXVertexSP(50,100, $FFFFFFFF, 0.0, 50/Texture.Height), SXVertexSP(100,100, $FFFFFFFF, 50/Texture.Width, 50/Texture.Height) ], Texture, sxbAlpha, False ); もっとスマートな方法ってありますか? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/561
562: 名前は開発中のものです。 [sage] 04/08/12 22:35 ID:lCkZPmie >>561 それでよし >>559 漏れもTStringListに一票 桁揃えておけばソートできるしな 暇ならハイスコアコンポーネントでも作って公開してくれ >>550 変える順番が大事 変える個所は合ってる >>543 ほかの個所は使ってる >>536 前回のキー入力を保存 状態遷移でググると基本的な考え方がわかる やね本2の解説がわかりやすい >>528 QDの良い所はVCL連携と3Dオブジェクト(しかもモーション付き)の扱いが楽 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/562
563: 名前は開発中のものです。 [sage] 04/08/12 23:43 ID:Ev6Dy7m9 >>562 レスありがとうございます。 でもこれだと解像度の違いのせいか、描画したい元画像の範囲選択が上手くいかないんです。 解像度を800×600にして、元の画像の大きさが50×100だとすると、下のソースでは 画像の Rect(0, 20, 50, 50) の部分が描画されると思うのですが、ずれてしまいます。 Scene.PushSprite( Vector2D(0,0), [ SXVertexSP(0, 0, $FFFFFFFF, 0.0, 0.2), SXVertexSP(0, 50, $FFFFFFFF, 1.0, 0.2), SXVertexSP(30, 0, $FFFFFFFF, 0.0, 0.5), SXVertexSP(50, 30, $FFFFFFFF, 1.0, 0.5) ], Texture, sxbAlpha, False ); ゲームでたくさんの画像を使うときには皆さんどうしているのですか? 一つ一つテクスチャを作るか、それとも一つのファイルに画像を収めて 一部だけを描画するようにしているのでしょうか。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/563
564: 名前は開発中のものです。 [sage] 04/08/13 01:22 ID:y25szJtr そりゃずれると思われ http://echo.5ch.net/test/read.cgi/gamedev/1006249204/564
565: 名前は開発中のものです。 [sage] 04/08/14 10:53 ID:ennbBjlN 微妙に間違えてますた。 でも、これでもずれますが、どのようにパラメータを指定すればいいんでしょう。 Scene.PushSprite( Vector2D(0,0), [ SXVertexSP(0, 0, $FFFFFFFF, 0.0, 0.2), SXVertexSP(50, 0, $FFFFFFFF, 1.0, 0.2), SXVertexSP(0, 30, $FFFFFFFF, 0.0, 0.5), SXVertexSP(50, 30, $FFFFFFFF, 1.0, 0.5) ], Texture, sxbAlpha, False ); http://echo.5ch.net/test/read.cgi/gamedev/1006249204/565
566: 名前は開発中のものです。 [] 04/08/15 02:11 ID:PuiE5qNp >>565 画像のサイズが2のn乗じゃないから。 テクスチャのサイズは読み込んだ画像と同じとは限りません。 TDGTextureのプロパティTotalWidthなどで確認できます。 Widthとの値の差を見比べるとよいでしょう。 読み込んだ画像が2のn乗に満たない場合は自動的にテクスチャのサイズが拡張されます。 そのサイズは読み込んだ画像以上でなおかつ最小の2のn乗になります。 50x100の場合は64x128になります。 たとえば50x100の画像を読み込んで作ったテクスチャの左上から32x32を表示したい場合は テクスチャが64x128に拡張されているので以下のようにしてUVを求められます。 U=1/64*32 V=1/128*32 ここからは余談ですがグラフィックボードによってはテクスチャに色々な制限があります。 ・256x256以下のサイズしか扱えない ・正方形でないとならない ・2のn乗サイズでないといけない ・32bit色が使えない 記憶を頼りに書いてるので間違ってたらツッコミおながいします。 ちなみにVoodooシリーズがこれらの制限に全てひっかかるカードです。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/566
567: 名前は開発中のものです。 [sage] 04/08/15 04:22 ID:PuiE5qNp >>565 とりあえずサンプル http://gamdev.org/up/img/1047.lzh http://echo.5ch.net/test/read.cgi/gamedev/1006249204/567
568: 名前は開発中のものです。 [sage] 04/08/15 09:35 ID:moZoUrx5 丁寧な解説ありがd >>567 起動してくれません。デバッグログには、 「Direct3DDeviceオブジェクトの生成に失敗しました(Error Code D3DERR_OUTOFVIDEOMEMORY)」 とあります。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/568
569: 名前は開発中のものです。 [sage] 04/08/15 13:01 ID:PuiE5qNp >>568 たぶんビデオカードのメモリが不足してるだけだからテクスチャのサイズが小さくなれば解決すると思う サンプルでは512キロバイト使ってるからグラフィックボードを買い足していない環境じゃつらいかも 思いついた対策を書いておきます これでもダメならグラフィックチップの種類やVRAM容量、エラーログの全文がわかればもう少し詳しく調べられるかも ・画像編集ソフト(ペイントなど)で画像のサイズ(今は288x256)をもっと小さくする(試しに32x32ぐらいに) ・画像編集ソフト(ペイントなど)で画像の色数を減らす(16ビット色に) ・TDGCarad(女の子のアイコンのコンポーネント)のプロパティUseSoftwareVertexProcessingをTrueにする http://echo.5ch.net/test/read.cgi/gamedev/1006249204/569
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 407 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s