[過去ログ] Delphiゲームプログラミング相談室 (976レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
533: 名前は開発中のものです。 [sage] 04/06/08 19:38 ID:v9GfdNbX(1) AAS
 DGは明示的にFreeしなくてもフォームが勝手に捨ててくれるんじゃねえの? 
534: 530 [sage] 04/06/08 21:39 ID:+uDFzKA1(1) AAS
 >>532今までOnDestroyで解放していました。(これはエラーがでます。) 
 OnCloseで解放するとうまくいきました。 
 ありがとうございました。 
535: 名前は開発中のものです。 [sage] 04/06/08 22:04 ID:Y4UTvjR4(1) AAS
 何か間違ってる 
536(1): 名前は開発中のものです。 [sage] 04/06/09 07:09 ID:GrePfY40(1) AAS
 TDDIDFFXについての質問です 
 カーソルキーを押しっぱなしにするとTDDIDFFX.Stick.X(又はY)は常に1(又は-1)を返します 
 カーソルキーを連打しないと動作しないようにするにはどのようにすればできるでしょうか? 
537(1): 名前は開発中のものです。 [sage] 04/06/09 23:16 ID:CYWVb9fr(1) AAS
 >>530530(4): 名前は開発中のものです。 [] 04/06/07 19:54 ID:74upfBbg(1) AAS
 QDのメッシュとsxなどの外部ファイルを使わないポリゴンを同時に表示したくて 
 DirectXSDKのサンプルとQDのサンプルを参考にしてプログラムを組んでみました。 
  
 なんとか表示はできたものの、ウィンドウのリサイズや終了時にアプリケーションエラーがでてしまいます。 
 QDのログをみるとこのようなエラーが記録されていました。 
 >Direct3DDeviceオブジェクトの解放に失敗しました(Error Code = UNKNOWN ERROR ... $00000001) 
  
 メッシュのロードをしなければ終了時にアプリケーションエラーはでなくなりましたがログのエラーは消えていません。 
 リサイズ時には終了してしまいます。 
  
 このエラーを出ないようにするにはどうすればよいでしょうか? 
  
 外部リンク[zip]:gamdev.org  
せっかくあるんだからTDGVertexBuffer使いなよ 
538(1): 530 [sage] 04/06/09 23:57 ID:dS+m1a5k(1) AAS
 >>537 
 使おうとしたけどサッパリ使い方がわからず諦めた 
539(1): 名前は開発中のものです。 [sage] 04/06/11 00:13 ID:dhcI2Ruo(1) AAS
 >>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)); 
 に。以上。
540(1): 名前は開発中のものです。 [sage] 04/06/17 15:57 ID:zIL55T19(1) AAS
 >>539 
 ありがとー 
 エラーもでないし上手くいきました 
 リサイズすると消えてしまいますがもうちょっとがんばってみます 
541: 名前は開発中のものです。 [] 04/06/17 16:52 ID:UbgtGyWv(1) AAS
 >>540 
 Create時の指定が D3DPOOL_MANAGED なら消えないみたいですね。 
  
 というわけでDGCarad9.pasの 
 2682 
 2701行は 
 D3DPOOL_MANAGEDの間違いだと思うのですが・・・・・ 
  
 さらに、 
 2711 
 2718行は 
 if FPool <> D3DPOOL_MANAGED then 
 の方がいい気が・・・・ 
  
 教えてエロイ人。
542: 名前は開発中のものです。 [sage] 04/06/17 18:04 ID:wOwJ2Vyc(1) AAS
 教えない 
543(1): 名前は開発中のものです。 [sage] 04/06/17 22:57 ID:PyX6xxqm(1) AAS
 そもそも内部でRestore用に保持するぐらいなら鼻から 
 MANAGED使った方がいい気がするんだが。 
544(3): 名前は開発中のものです。 [sage] 04/06/21 16:57 ID:hUNg5P7j(1/2) AAS
 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で測定しました。 
545: 名前は開発中のものです。 [sage] 04/06/21 17:33 ID:dfz266Vj(1) AAS
 > Timer_RenderはTTimerコンポーネントでIntervalは1で動かしています 
  
 ( ゜д゜)カポーン 
546: 544 [sage] 04/06/21 17:49 ID:hUNg5P7j(2/2) AAS
 追伸、Idleで動作させても50FPS程度です。 
547(1): 名前は開発中のものです。 [sage] 04/06/21 20:26 ID:C5bKRRLU(1) AAS
 >>544 
 d3dpp.PresentationInterval:= D3DPRESENT_INTERVAL_IMMEDIATE; 
 は? 
548(1): 544 [sage] 04/06/22 09:38 ID:yy2X6pb6(1) AAS
 >>547 
 ありがとうございます。無事60FPS以上出ました。 
 ヘルプにフルスクリーンでしか意味ないようなこと書いていたので試してませんでした(^^;
549: 名前は開発中のものです。 [] 04/06/23 11:37 ID:175oP9wI(1) AAS
 >>548 
 60FPS以上いくと不安定になるVGAもあるみたいだから 
 注意してちょんまげ 
550(1): 名前は開発中のものです。 [sage] 04/06/24 12:26 ID:WbJlnPwQ(1) AAS
 フルスクリーンとウィンドウの切り替えは、 
 D3DPresentParametersのWindowedを変更してデバイスをResetするだけでは駄目なんでしょうか。 
 上記の方法でやろうとすると、フルスクリーンからウィンドウになったときにタイトルバーが消えてしまいます。 
 FormのBorderStyleをbsNoneにしたような感じですが、この状態でBorderStyleを変更しても変化がありません。 
 正しく切り替えるにはどのようにしたらいいでしょうか。 
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とか使った方がいいんでしょうかね? 
 引き続き色々試してみようと思います。 
554(2): 名前は開発中のものです。 [sage] 04/07/25 14:02 ID:y86X+J8o(1/3) AAS
 テクスチャの描画毎の生成破棄も相当コスト高いとおもうけど。 
  
 ふつうにあらかじめ確保したテクスチャにWriteすべきでね? 
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を使おうと模索中です。) 
556(1): 名前は開発中のものです。 [sage] 04/07/25 15:18 ID:y86X+J8o(2/3) AAS
 >>555 
 ん?それだと 
 >Text1 := Sxw.CreateStringTexture(); 
 の部分で毎回テクスチャがクリエイトされちゃうじゃん。そりゃリークしまくるでしょ。 
  
 Writeすればっつーのは 
 FormCreateでText1をクリエイトして 
 >Sxw.Write(0,0,'Score',Text1); 
 とでもすればっていうこと。 
557(1): 名前は開発中のものです。 [sage] 04/07/25 15:35 ID:y86X+J8o(3/3) AAS
 あ、言い忘れた。 
 当たり前だけど毎描画Writeするのも重いはず。 
 別に文字列持っておいて変化したらWriteするようにするのが普通だと思う。 
上下前次1-新書関写板覧索設栞歴
あと 419 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s