[過去ログ]
Delphiゲームプログラミング相談室 (976レス)
Delphiゲームプログラミング相談室 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
533: 名前は開発中のものです。 [sage] 04/06/08 19:38 ID:v9GfdNbX DGは明示的にFreeしなくてもフォームが勝手に捨ててくれるんじゃねえの? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/533
534: 530 [sage] 04/06/08 21:39 ID:+uDFzKA1 >>532 今までOnDestroyで解放していました。(これはエラーがでます。) OnCloseで解放するとうまくいきました。 ありがとうございました。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/534
535: 名前は開発中のものです。 [sage] 04/06/08 22:04 ID:Y4UTvjR4 何か間違ってる http://echo.5ch.net/test/read.cgi/gamedev/1006249204/535
536: 名前は開発中のものです。 [sage] 04/06/09 07:09 ID:GrePfY40 TDDIDFFXについての質問です カーソルキーを押しっぱなしにするとTDDIDFFX.Stick.X(又はY)は常に1(又は-1)を返します カーソルキーを連打しないと動作しないようにするにはどのようにすればできるでしょうか? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/536
537: 名前は開発中のものです。 [sage] 04/06/09 23:16 ID:CYWVb9fr >>530 せっかくあるんだからTDGVertexBuffer使いなよ http://echo.5ch.net/test/read.cgi/gamedev/1006249204/537
538: 530 [sage] 04/06/09 23:57 ID:dS+m1a5k >>537 使おうとしたけどサッパリ使い方がわからず諦めた http://echo.5ch.net/test/read.cgi/gamedev/1006249204/538
539: 名前は開発中のものです。 [sage] 04/06/11 00:13 ID:dhcI2Ruo >>538 そんな難しいか? TForm1に vb: TDGVertexBuffer; を追加。 FormCreateのVB作成部分を vb:= TDGVertexBuffer.Create(DG, 3, SizeOf(TCustomVertex), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT); pVertices:= vb.Lock(0, 3, 0); try CopyMemory(pVertices, @vertices, SizeOf(vertices)); finally vb.Unlock; end; に。 ApplicationEvents1IdleのVB表示準備部分を DG.D3DDevice.SetStreamSource(0, vb.VertexBuffer, 0, SizeOf(TCustomVertex)); に。以上。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/539
540: 名前は開発中のものです。 [sage] 04/06/17 15:57 ID:zIL55T19 >>539 ありがとー エラーもでないし上手くいきました リサイズすると消えてしまいますがもうちょっとがんばってみます http://echo.5ch.net/test/read.cgi/gamedev/1006249204/540
541: 名前は開発中のものです。 [] 04/06/17 16:52 ID:UbgtGyWv >>540 Create時の指定が D3DPOOL_MANAGED なら消えないみたいですね。 というわけでDGCarad9.pasの 2682 2701行は D3DPOOL_MANAGEDの間違いだと思うのですが・・・・・ さらに、 2711 2718行は if FPool <> D3DPOOL_MANAGED then の方がいい気が・・・・ 教えてエロイ人。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/541
542: 名前は開発中のものです。 [sage] 04/06/17 18:04 ID:wOwJ2Vyc 教えない http://echo.5ch.net/test/read.cgi/gamedev/1006249204/542
543: 名前は開発中のものです。 [sage] 04/06/17 22:57 ID:PyX6xxqm そもそも内部でRestore用に保持するぐらいなら鼻から MANAGED使った方がいい気がするんだが。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/543
544: 名前は開発中のものです。 [sage] 04/06/21 16:57 ID:hUNg5P7j JEDIのDX9ヘッダを使用しているのですが、困っています。 以下のコードでActiveはプロジェクトファイルの中でフォーム作成直後に呼ばれる関数で、Timer_RenderはTTimerコンポーネントでIntervalは1で動かしています。また、フォームのクライアントサイズは640*480です。 var D3D9:IDirect3D9; Dev:IDirect3DDevice9; procedure TMainWindow.Active; var d3dpp:D3DPresent_Parameters; begin D3D9:=Direct3DCreate9(D3D_SDK_VERSION); ZeroMemory(@d3dpp,SizeOf(d3dpp)); d3dpp.Windowed:=true; d3dpp.SwapEffect:=D3DSWAPEFFECT_DISCARD; D3D9.CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,Handle,D3DCREATE_HARDWARE_VERTEXPROCESSING,@d3dpp,Dev); Timer_Render.Enabled:=true; end; procedure TMainWindow.Timer_RenderTimer(Sender: TObject); begin Dev.Clear(0,nil,D3DCLEAR_TARGET,$000000FF,1.0,0); Dev.BeginScene; Dev.EndScene; Dev.Present(nil,nil,0,nil); end; このプログラムは最低限のデバイス作成と画面の初期化だけを実行するものです。 フレームレートが33FPS前後しか出ず、困っております。 ご助言よろしくお願いします。 私の環境は、WindowsXP+Delphi7ProでPentium4の3.4GHz、GeForceFX5950Ultraで測定しました。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/544
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 419 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s