トップページgamedev
1001コメント372KB

DirectX総合スレ (Part5)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/09/08(金) 23:56:42ID:0F5D1JWX
言語はC++
他の言語使ってる奴はいますぐ消えろ
0261名前は開発中のものです。2006/09/19(火) 02:30:20ID:E+vk7FJ4
うんこ
0262名前は開発中のものです。2006/09/19(火) 07:30:08ID:t7b8fFIa
>>260
そんな想像力もない奴と話なんぞできん。
0263名前は開発中のものです。2006/09/19(火) 08:59:22ID:1N/W0sXJ
>>256
Lunaは自宅鯖でSubversion管理されてなかったか?w
0264名前は開発中のものです。2006/09/19(火) 17:33:32ID:9n1QZKMP
知恵を貸しておくれorz
HLSLで描画前にテクスチャ数を指定してシェーダが切り替わるようにしたいんだけど、
上手く切り替わらず、毎回テクスチャONの状態になってしまいます……。

エフェクトファイルは↓なんですが、合ってるかどうか見てくれませんか?
http://gamdev.org/up/img/7619.zip
0265名前は開発中のものです。2006/09/19(火) 18:35:40ID:n+W5xQne
つーか、エフェクトは特に問題なさそうなので実行してみたら
ちゃんと切り替わるじゃんYO
UseTexCntの値を入力してないんじゃね?
0266名前は開発中のものです。2006/09/19(火) 18:50:23ID:n+W5xQne
いや、逆か…
値を入力しないとテクスチャONにならないし、UseTexCntが1のままとかかな?
0267名前は開発中のものです。2006/09/19(火) 19:47:47ID:9n1QZKMP
確認ありがとうございます。エフェクトは合ってたのか……。
さっきGetInt()で確認したらUseTexCntの値はちゃんと描画前に0・1が切り替わっていました。
んー、何が原因なのかさっぱり分からない。orz ソースの方をもっっとよくトレースしてみます。
0268名前は開発中のものです。2006/09/19(火) 21:37:36ID:/6g1Cemc
243です。とりあえず
第1弾 ライブラリ機能を上げさせていただきます。
・テクスチャマネージャ
・シェーダマネージャ
・ファイルシステム
・インプットシステム
・オーディオシステム
・Xファイル(スキン)
・描画系はできる限りシェーダで行う
・算術関数
・フォント
・スクリプト
・カメラ
・視垂体による描画判定
・メモリマネージャ
・2Dスプライト
・パーティクル
・プロファイラ
・LOD
・カメラ位置からの距離によるミップマップ
・オーダリングテーブル(オブジェクトのソート)
0269名前は開発中のものです。2006/09/19(火) 22:56:41ID:t7b8fFIa
>>268
乙。
じゃあ、次は優先度を・・・。
0270名前は開発中のものです。2006/09/19(火) 23:18:58ID:PUi+Z24t
>>267
もう済んでるかもしれないけど、描画直前(BeginPass()後)に
パラメータいじった場合は、CommitChanges()呼ばないとだめよ。
0271名前は開発中のものです。2006/09/19(火) 23:47:57ID:SaZdkbYW
>>264
力になれなくて残念なんだが・・・

VertexShader/PixelShaderの配列を定義して
変数で切り替えられるのを初めて知った!!
ありがとう!! そして、頑張れ!
0272名前は開発中のものです。2006/09/20(水) 00:18:57ID:vxl0rQet
268です。
第2弾 優先決めました。
・1.テクスチャマネージャ
・6.シェーダマネージャ
・17.ファイルシステム
・10.インプットシステム
・11.オーディオシステム
・5.Xファイル(スキン)
・9.描画系はできる限りシェーダで行う
・2.算術関数
・3.フォント
・18.スクリプト
・4.カメラ
・12.視垂体による描画判定
・16.メモリマネージャ
・8.2Dスプライト
・7.パーティクル
・19.プロファイラ
・13.LOD
・15.カメラ位置からの距離によるミップマップ
・14.オーダリングテーブル(オブジェクトのソート)
0273名前は開発中のものです。2006/09/20(水) 00:25:00ID:37EIjtZt
>>272
見辛い・・(´Д`)

メモリマネージャとかファイルシステムを後回しして大丈夫か?w
「描画系はできる限りシェーダで行う」なのにシェーダマネージャが
Xファイルよりも後だし・・パーティクルとか妙にハエーしw

一応確認しておくが、DirectX使ったゲーム作ったことある?
02742642006/09/20(水) 00:25:09ID:sFU/X0hE
名前でパラメータを指定したらエラーが出たので良く確認したら、
別のエフェクトのパラメータに書き込んでましたorz

ハンドルで指定していたらエラーが出ないのね……。
0275名前は開発中のものです。2006/09/20(水) 00:26:16ID:8TG2Ez5s
・1.テクスチャマネージャ
・2.算術関数
・3.フォント
・4.カメラ
・5.Xファイル(スキン)
・6.シェーダマネージャ
・7.パーティクル
・8.2Dスプライト
・9.描画系はできる限りシェーダで行う
・10.インプットシステム
・11.オーディオシステム
・12.視垂体による描画判定
・13.LOD
・14.オーダリングテーブル(オブジェクトのソート)
・15.カメラ位置からの距離によるミップマップ
・16.メモリマネージャ
・17.ファイルシステム
・18.スクリプト
・19.プロファイラ
ソートしてやった
0276名前は開発中のものです。2006/09/20(水) 00:31:44ID:37EIjtZt
>>274
> さっきGetInt()で確認したらUseTexCntの値はちゃんと描画前に0・1が切り替わっていました。
これを信じて、そのオチはないと信じてました・・・(;´д`)
0277名前は開発中のものです。2006/09/20(水) 00:38:20ID:sFU/X0hE
ごめんなさい。
SetInt()をコピペしてGetInt()に変えて試してました・・・。
こんな単純なミスだと思わなかった。orz
0278名前は開発中のものです。2006/09/20(水) 00:45:56ID:37EIjtZt
俺ならこんな感じ
・フォント       // デバッグが楽になる
・メモリマネージャ   // まずコレ
・ファイルシステム   // テクスチャ読むため(早くも飽きてくる)
・テクスチャマネージャ
・2Dスプライト     // テクスチャ確認用(もう完成した気分)
・シェーダマネージャ  // モチベーション維持のため
・描画系はできる限りシェーダで行う
・Xファイル(スキン) 
・算術関数       // (惰性で開発を続け始めるころ)
・カメラ
・インプットシステム   // カメラを移動してみたい(もう限界)
※ここで開発終了の可能性高し※
・プロファイラ      // 以降のパフォーマンス確認のため
・LOD
・視垂体による描画判定
・オーダリングテーブル(オブジェクトのソート)
・カメラ位置からの距離によるミップマップ
・パーティクル
・スクリプト
・オーディオシステム
0279名前は開発中のものです。2006/09/20(水) 00:59:57ID:JLgKEs2/
>>275,278
なんか完成予想図がいつもどおりのラッパーだな。
完成してもゲーム作るの程遠いっつか夢がもてないw
これじゃ作ってもあんまり意味ないと思うんだけど・・・。

逆に考えてみね?
どんなゲームが作りたいか?
ってのをまず出して、そのためのライブラリを考えてみね?
0280名前は開発中のものです。2006/09/20(水) 01:03:24ID:8TG2Ez5s
>どんなゲームが作りたいか?
NTや95でも動くエロゲ
0281名前は開発中のものです。2006/09/20(水) 01:06:03ID:JLgKEs2/
>>280
そしたら迷わずGDI+を奨める。
0282名前は開発中のものです。2006/09/20(水) 01:07:13ID:JLgKEs2/
だめだ、うごかねぇか?>95 NT
0283名前は開発中のものです。2006/09/20(水) 01:08:33ID:JLgKEs2/
ま、1日じっくり考えてみようや。
0284名前は開発中のものです。2006/09/20(水) 01:09:08ID:a1eP4hFR
GDI+って、.NET?
95やNTでも動いたっけ?
0285名前は開発中のものです。2006/09/20(水) 01:11:59ID:JLgKEs2/
>>284
>GDI+ はWindowsXPから使えるようになった2DグラフィックAPIである。
>XP以前でも、gdiplus.dllを入れれば利用可能である。(98以降か、NT4.0sp6以降)
95は駄目っぽい。
0286名前は開発中のものです。2006/09/20(水) 01:12:42ID:8TG2Ez5s
冗談なのにマジレスされた。

多分動かない
XPか2000か忘れたけど、デフォルトのDLLにバグがあって
修正版同梱しなきゃいけないというか
GDI+は、あんまりいいうわさを聞かない。
というか95とかは、全部ソフトウエアレンダリングで。
0287名前は開発中のものです。2006/09/20(水) 01:19:58ID:vxl0rQet
どんなゲームが作りたいかと言われればPCゲームのトレンドがのっかるもの。
正直、上であげた機能+αあれば2Dのゲームはまぁ2Dエフェクト用のエフェクトファイル
みたいなものを作らなければいけないだろうけど大丈夫だと思ってます。
3DでもRPGとかアクションとかを考えていったらLODとかは必須だし、シェーダもほしいし、みたいな
ことを考えていくと結構いろいろあるに越したことはないし。DX10のことを考えればDX9バージョンで
ある程度しっかりしたものがあれば移行も楽になるし、当分の間はDX10バージョンとDX9バージョン
の両方のバージョンが必要みたいなことも考えられますのであえてこういったゲームが作りたいから
この機能が必要っていう流れよりある程度のどのジャンルでも必要なものは全部入れたい(願わくば)。
実は今もちょこっと作ってて結構いろいろ修正しなくちゃいけないもののソースはあります。
0288名前は開発中のものです。2006/09/20(水) 01:30:55ID:JLgKEs2/
>>287
ちがうわボケ。
具体的なゲーム名が欲しいね。
つまりさ

枝葉の部分に熱心で全然ゲーム作れそうにないじゃん。このライブラリ。

って言いたいのよ。
0289名前は開発中のものです。2006/09/20(水) 01:31:26ID:SMchqepX
俺ならこの順番だな。
ついでにメモも。

・1.メモリマネージャ          :メモリ管理はWindowsに任せたほうがよくないか?
・2.ファイルシステム          :できればソース変更無しにパックしたファイルからの読み込みも対応して欲しい
・3.テクスチャマネージャ        :何をマネージするん?
・4.2Dスプライト            :がんばれ
・5.フォント              :D3DXFontは使うなよ
・6.インプットシステム         :がんばれ
・7.オーディオシステム         :Oggの対応はしてないと結局外部のサウンドドライバ使う事になりそう
・8.描画系はできる限りシェーダで行う  :がんばれ
・9.シェーダマネージャ         :がんばれ
・10.算術関数              :Sin/Cosのテーブルでも作るん?コリジョン関係?
・11.カメラ               :がんばれ
・12.Xファイル(スキン)         :がんばれ
・13.パーティクル            :がんばれ
・14.視垂体による描画判定        :がんばれ
・15.LOD                :がんばれ
・16.オーダリングテーブル(オブジェクトのソート) :シーングラフとか最低でもオクトツリーくらいは欲しい
・17.カメラ位置からの距離によるミップマップ   :Direct3Dが自動的にやってる気がする。Mipmap使うより異方性フィルタの方が綺麗だけどね
・18.プロファイラ                :がんばれ
・19.スクリプト                 :Luaでよくね?

言っちゃなんだが列挙された機能だけ見るとLunaと大して変わらないな。
0290名前は開発中のものです。2006/09/20(水) 01:45:23ID:37EIjtZt
>>280
つJavaアプレット

>>287
DirectXそのまま使えよw
0291名前は開発中のものです。2006/09/20(水) 02:25:42ID:9pKZ8pjk
前スレで、
 DrawPrimitive 使って、128x128ぐらいのポリゴンを50枚ぐらい描画してます。
1回のDrawPrimitive で、1枚だけなので、50回DrawPrimitive を実行してます。
すると、ポリゴンがときどき変な形になるんです。
頂点がずれたように、斜めになったりとか。
そこで、一回DrawPrimitive を実行した後に、Sleep(3); を入れてやってみたんです。
すると、速度は落ちましたが、ポリゴンが変になることは無くなった。
てことは、前回の描画が済んでいない間に描画してる?
そこで、DrawPrimitive の最後の引数に、D3DDP_WAIT とかやってみたけどダメでした。
何が原因でどーやれば直りますか?

って書いた者ですが、Win32APIで頂点用メモリ確保したたのを、
D3Dの頂点バッファ使ったものにしたけど、結果は同じでした。
0292名前は開発中のものです。2006/09/20(水) 03:01:32ID:8TG2Ez5s
>>289

D3DXFontってやっぱ駄目なん?
0293名前は開発中のものです。2006/09/20(水) 03:36:56ID:8TG2Ez5s
メタセコで、反射光とかを強調した設定で
Direct3D描画とOpenGL描画を比べたけど
OpenGLのほうが細かく綺麗
OpenGLってええのん?
0294名前は開発中のものです。2006/09/20(水) 09:00:43ID:SMchqepX
>>292
そのそもユーザーがインストールしてないフォントは出せないし、
影、グラデーション、縁、とかをつけようしたら結局画像で持たなきゃでしょ。

あとFF11やPSUのキャラの名前みたいに3D空間に文字を表示するのは
D3DXFontなんかじゃやってられないべ。
0295名前は開発中のものです。2006/09/20(水) 12:07:45ID:ymA1aj6X
ライブラリなんかより特殊効果エディタがほしいんだよな
タイムラインとかあってテクスチャの位置とか透明度とか大きさのアニメをクニクニいじれるの
仕様を決めたら誰か勉強がてらつくってくれる?
0296名前は開発中のものです。2006/09/20(水) 12:30:13ID:Xs5BryGe
>291
エスパーを待てないならソースを晒せ。
0297名前は開発中のものです。2006/09/20(水) 12:40:17ID:evuW5ro9
腹減ったからついでにヤキソバも晒せ
0298名前は開発中のものです。2006/09/20(水) 14:44:46ID:+KfsWgDs
>>297
http://portal.nifty.com/2006/09/18/b/
0299名前は開発中のものです。2006/09/20(水) 15:19:51ID:fb5XSQAC
>>291
ドライバ
0300名前は開発中のものです。2006/09/20(水) 15:46:47ID:+KfsWgDs
>>294
デバッグ用、エロゲっぽいメッセージ用にD3DXFont版も持ってていいと思う
0301名前は開発中のものです。2006/09/20(水) 15:47:25ID:37EIjtZt
>>291
> って書いた者ですが、Win32APIで頂点用メモリ確保したたのを、
> D3Dの頂点バッファ使ったものにしたけど、結果は同じでした。

当然ポリゴン50枚分のバッファを用意して試したんだよな?
0302名前は開発中のものです。2006/09/20(水) 21:35:46ID:i8H7IqgD
やりかけのソースですがあげました。
ttp://gamdev.org/up/upload.php
7623.ziplib
0303名前は開発中のものです。2006/09/20(水) 21:54:30ID:jot8TQ3t
なんて綺麗なソースなんだw orz
0304名前は開発中のものです。2006/09/20(水) 22:23:15ID:SMchqepX
>>302
DirectXのバージョンはどれ?
DirectX9だけでも10以上のバージョン違いあるねん。
0305名前は開発中のものです。2006/09/20(水) 23:29:38ID:Eb3Bq3HL
・フォント       // デバッグが楽になる
kwsk
0306名前は開発中のものです。2006/09/20(水) 23:31:01ID:oucXxDtX
画面にデバッグ情報を流すんじゃないか?
0307名前は開発中のものです。2006/09/20(水) 23:32:10ID:SMchqepX
俺はデバッグモードの時はシステムをコンソールにして
DOS窓にprintfでデバッグ情報表示してるなぁ。
0308名前は開発中のものです。2006/09/20(水) 23:32:22ID:8TG2Ez5s
1>.\Main\DXSystem.rc(10) : fatal error RC1015: cannot open include file 'afxres.h'.
0309名前は開発中のものです。2006/09/20(水) 23:32:52ID:8TG2Ez5s
OutputDebugString使うといいよ
0310名前は開発中のものです。2006/09/20(水) 23:33:20ID:SMchqepX
>>308
VS2005EE使ってないか?
EEはMFCやリソース関係が使えないぞ。
0311名前は開発中のものです。2006/09/20(水) 23:35:18ID:8TG2Ez5s
EEしかない><
0312名前は開発中のものです。2006/09/20(水) 23:44:23ID:8TG2Ez5s
>>302の7610がクオリティ高すぎて泣いた
0313名前は開発中のものです。2006/09/20(水) 23:47:03ID:oucXxDtX
ネギ格の格は別格の格だから無問題。
0314名前は開発中のものです。2006/09/20(水) 23:57:15ID:jpdNbZbv
>>311
あれ?俺のは普通に出来るけど・・・
includeディレクトリに

C:\Program Files\Microsoft Platform SDK\Include\mfc

とか入ってないんじゃね?
0315名前は開発中のものです。2006/09/21(木) 00:02:41ID:4FMuFct9
>>314
いけた。dクス
0316名前は開発中のものです。2006/09/21(木) 00:11:58ID:HvKhVd8X
でどうでしょうか?
ここからいろいろ修正しなくてはいけないものの実装していけば
いくぶん楽になるのかなと思ってます。皆様どうでしょう?
0317名前は開発中のものです。2006/09/21(木) 00:13:35ID:8drzSPV5
>>302
なんか丁寧に作られてて好印象だけど、いきなりボリュームあるなあw
実行するとエラーで止まるし(´Д`)

ざっとしか見てないんだが、単なるラッパーよりはマシだけど
DirectXとか3Dの知識がないと使えない感じがして
ライブラリーにする意味があるのか疑問。

もっと抽象化して感覚的に使えるようにしたいところだなあ。
DirectXよりも使うの大変、ってことになったら本当に意味ないし。
0318名前は開発中のものです。2006/09/21(木) 00:20:37ID:fqy8SQk8
見てみたが基本的にラッパーの域を抜けてないな。
0319名前は開発中のものです。2006/09/21(木) 00:35:12ID:eEpWsKHV
Yo!!
ラッパー舐めるなYo!!
0320名前は開発中のものです。2006/09/21(木) 00:41:50ID:NXk6nMX2
俺が昔作ったラッパーなんて
Open、Close、LoadTexture、LoadVertex、DrawPolygon、DrawSprite
の6つしか関数がなかったぜ
0321名前は開発中のものです。2006/09/21(木) 00:42:14ID:QgzW8n2H
だったら追加ヨロw
・キャラ基本動作
・地形との当たり判定
・瞬間弾
・榴弾
・弾道弾
・誘導弾
・自動車
・キャタピラー車
・飛行機
・ヘリ


もうDirectXの範疇じゃないがw
0322名前は開発中のものです。2006/09/21(木) 00:49:51ID:HLxN0OV5
>>316
とりあえずココまで出来てるなら次はシェーダー対応したらどう?
固定機能からシェーダー対応って意外と手間だし、固定機能で作りこめば作りこむほど面倒になる。

基本的な部分は一通り出来てるんだしシェーダー周りを充実させたほうがいいと思われ。
0323名前は開発中のものです。2006/09/21(木) 00:55:35ID:GOD3d2R3
ラッパーの域を出るにはある程度思想を持った設計にする必要があるね。
3D初心者が最初に深い挫折を味わうシーングラフの最適化とか、
良く知られた方法(BSPツリー等)をライブラリで提供してくれるといいかも。
欲を言えば同じツリーで当たり判定の絞込みとか、環境音の遮蔽とか
一括してできるように設計してあれば間違いなく人気ライブラリになるだろう。
0324名前は開発中のものです。2006/09/21(木) 00:56:43ID:+j1lUXRe
でもシェーダーって結構高いんだよね…?
ホビープログラマーとかでも買えるの?
0325名前は開発中のものです。2006/09/21(木) 01:04:24ID:8drzSPV5
>>324
3DソフトのShadeか何かと勘違いしてる?
シェーダってプログラムの中の話ですよ。
0326名前は開発中のものです。2006/09/21(木) 01:07:03ID:GOD3d2R3
ってソースを見てみたが、かなり古い設計をしてるなw
ウィンドウサイズとかdefineしてる時点でかなりガックリ来た。
今時のライブラリなら設定管理クラスで動的に管理してくれよぅ。
0327名前は開発中のものです。2006/09/21(木) 01:11:17ID:HvKhVd8X
307さんありがとうございます。それはかなりわかりやすそうなので組み込もうと思います。
317さんのご意見もっともですね、DirectX知らないとわからない部分が多いと自分でも思います。
シェーダ周りを中心に充実させていく流れで作っていこうと思います。
ちなみにサイトでも公開していますのでそちらに最新版をおいているのでいつでもどうぞ。(URLは秘密)
0328名前は開発中のものです。2006/09/21(木) 01:17:33ID:HLxN0OV5
とりあえず既存のライブラリを凌駕するようなのが出来るのを祈ってるぜ。
見た感じ一番のライバルになりそうなのはLampでないかな?
0329名前は開発中のものです。2006/09/21(木) 01:19:41ID:8drzSPV5
>>327
DOS窓にprintfで文字出すのも悪いとは言わないけど
フルスクリーン時に全然見えないっていう欠点も忘れずに・・

後でLOG的に見るだけだったら、それこそLOGファイル見ればいいことだし。
0330名前は開発中のものです。2006/09/21(木) 01:31:55ID:8drzSPV5
>>328
Lampっつーの初めてみたけど、コレ使われてるの?
他の DXだかいうライブラリも同じ感じ??
だったら、>>327 のやつもイイ線いってるってことなのかな。

なんでもっとシンプルに仕上げられないのか疑問だぜ・・(´Д`) ボソリ
>>320 はシンプルすぎだがw
0331名前は開発中のものです。2006/09/21(木) 02:00:52ID:4FMuFct9
コメントをdoxygen等に対応させると
ドキュメント自動生成してくれるので楽よ。
03322912006/09/21(木) 06:16:52ID:NSl3TVGi
グラボを、ラデオン9200SEから、ゲフォ4にしたら、
かなり改善されました。
しかし、完全には無くなりません。
D3Dによる頂点バッファは、50あるポリゴンごとに確保してます。
この世代のグラボでこーなるのは、仕様であったりバグであったりするものでしょーか?
0333名前は開発中のものです。2006/09/21(木) 06:20:00ID:5ruKmJ4x
俺からすればTextureManageなんてロストさえなければ作る意味がわからない。
やっぱ、実装だけはVistaまで待ったほうがいいよ。
絶対、不必要なもんばっかりだから。
03342912006/09/21(木) 06:20:02ID:NSl3TVGi
あ、漏れのコードにちょとバグはけん
03352912006/09/21(木) 06:45:04ID:NSl3TVGi
バグなおしたけど同じでした。
頂点バッファをかえてもダメってことは、あと考えられるのは
テクスチャもポリゴンごとに確保することぐらいしか
0336名前は開発中のものです。2006/09/21(木) 06:57:59ID:G9WJnnc7
スクリーンショット撮って該当箇所に丸付けて見せて。
0337名前は開発中のものです。2006/09/21(木) 08:44:26ID:HLxN0OV5
>>335
だからお前さんさ、
DrawPrimitiveしたあと描画完了待たないで書き換えてるんじゃねーの?
0338名前は開発中のものです。2006/09/21(木) 09:14:46ID:HLxN0OV5
>>333
DX10はVista専用だからそれにあわせて作るのもどうかと思う。
DX9で作っておけばWin98,ME,2000,XP,Vistaでの動作がサポートされるわけだし。

Vistaが普及なんて2,3年はかかるってM$の人間すら言ってるのだから
サポート環境や性能的に見てもしばらくはDX9対応のものがいいと思う。

>>329
もう1台マシン用意してリモートデバッグって手もあるぜ。
まぁprintfデバッグはライブラリよりゲームの時に使ってる。
イベント発生とかのタイミングで表示させたりと結構便利。
0339名前は開発中のものです。2006/09/21(木) 15:24:12ID:Gz5/V+Ov
>302
何となく見てみたが、
最初に見たMemoryManagerとやらの腐った実装に、突っ込まずには居られない。
0340名前は開発中のものです。2006/09/21(木) 18:50:24ID:w/U4pxaF
>>302
何となく見てみたが、
Program'm'ed だよ
0341名前は開発中のものです。2006/09/21(木) 21:45:59ID:HLxN0OV5
MemoryManagerはこれから手を入れていくんじゃないの?
Windowsなのにわざわざメモリ管理を自作する所からするとコンシューマーの人のような気がするけど。

あと自分でメモリ管理すると当然その分のメモリは確保しておく必要があるわけだけど、
現状だと>>302のライブラリは起動するだけで最低でも10MBのメモリを消費するという事は理解してる?

あとWindowsの場合new/deleteやmalloc/freeで確保したメモリを解放しないで
アプリケーションを終了させた場合でも、OSが全部勝手に解放してくれるし、
解放してないメモリの確保時のファイル名と行番号を教えてくれたりする。

最低でもコレ以上の機能はないと自分で実装する意味はないってことになるな。
0342名前は開発中のものです。2006/09/21(木) 21:58:21ID:HvKhVd8X
どうも302、以後Nと名乗ります。
MemoryManagerに関して何が目的で作ったかというとnewやdeleteなどのメモリ確保
などをゲーム中、あるシーンに入る前にジオメトリやらテクスチャやらを読み込む時に
毎回行うのと既に確保しているのから割り当てて使うのではスピードが早いので作りました。
0343名前は開発中のものです。2006/09/21(木) 22:30:29ID:/4EhidU1
N…ヌルポか!
0344名前は開発中のものです。2006/09/21(木) 22:47:15ID:5ruKmJ4x
おいおい。
ネタ提供してくれんのはありがたいと思うけど、こういうライブラリって役にたたねぇよ。
普通にLuna(既存)の方がいいじゃねぇか。
しかも、どうみてもラッパーの域をでねぇ。

>>341
>解放してないメモリの確保時のファイル名と行番号を教えてくれたりする。
え?これどうやってわかんの?
たまーに出てくるときもあるけど99.5%は????みたいなのが出てくるんだけど?
0345名前は開発中のものです。2006/09/21(木) 23:11:50ID:lwyY0NN2
出てきたばかりなんだから、長年やっているライブラリより足りないものが
あるに決まってるだろ。
C++のメモリ取得開放は遅いから(GCの方が早い)、独自メモリ管理は
やっている所もあるじゃないか。
03462912006/09/21(木) 23:13:21ID:NSl3TVGi
>>337
描画完了を待つにはどうやるの?全裸で。じゃなくてDX7で。
0347名前は開発中のものです。2006/09/21(木) 23:16:30ID:HLxN0OV5
画面更新で自動的に待つことになる。
普通は待たないですむように作る。
同じバッファの使い回しとかDX8以降は出来るが7はしらね。
0348名前は開発中のものです。2006/09/21(木) 23:32:56ID:HLxN0OV5
>>302
とりあえずここらへんを参考に
ttp://gamdev.org/w/?%5B%5B%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA%5D%5D
03492912006/09/21(木) 23:57:31ID:NSl3TVGi
テクスチャを50で全部独自に確保させたがダメだ。
なんかダメポです。解決不能。ってか、スリープ入れると直るってことはあれですね。描画未完了?
DX8に移るしかないようです。
0350名前は開発中のものです。2006/09/22(金) 00:04:13ID:ZBffE3Vt
なんでいまさら8?
素直に9に行きなさいナ。
03512912006/09/22(金) 00:12:27ID:FzUiG/+d
9だとGefo2が対応してないでしょ。
ビデオメモリ32M世代の。
0352名前は開発中のものです。2006/09/22(金) 00:12:35ID:AFaA2CK2
>>345
いや、それをあえてここでやる意味がわからん。
みんなで新しいライブラリを考えようってのならわかるが、
現時点で既存より劣ってるものについて語る意味ないと思うんだけど?

ああ、別に>>302の人が駄目っていうんじゃなくて、
俺等にとってLunaと>>302のLibと違いがあるかっていうとないでしょ?
この状況ならLunaのリンク貼ってLunaについて考えるところからはじめたほうがよっぽど先へ進むじゃん。
>>302ってLunaと作りが違うわけでも新世代(?)ライブラリでもなく、あくまで既存のラッパーの域を
でてないじゃん。ちなみにLanaがいいというわけではなくてあくまで既存の代表という意味で名前は使った。
ここでの例は別にソースが公開されているなら他のライブラリでも一向に構わないと思う。
0353名前は開発中のものです。2006/09/22(金) 00:16:04ID:mkbMBLxG
>>351
え、普通に対応してるでしょ。
03542912006/09/22(金) 00:17:00ID:FzUiG/+d
よくキャラクタごとにDrawPrimiじゃなくて、1回でやった方がいいってあれって、
それによってCPUの消費時間が減るとあるけど、
頂点情報を描画用頂点バッファに入れなきゃならないから、
その頂点を入れる作業と、いきなりDrawPrimiを実行するのとでは、
CPUが消費する時間は同じ以下だと思う
0355名前は開発中のものです。2006/09/22(金) 00:17:49ID:ZhhHldQ9
>>344
DEBUG_NEW でぐぐれ。
0356名前は開発中のものです。2006/09/22(金) 00:52:07ID:AFaA2CK2
>>355
ありがとう!
ところで非MFCの場合ってどうやるの?

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);

これ↑でやると肝心の場所がさっぱりわからないんだけど・・・。
0357名前は開発中のものです。2006/09/22(金) 00:56:34ID:AFaA2CK2
すまんみつけた。

リンクとサイトが消滅したときのために引用。
リンク
http://daybreaks.exblog.jp/m2006-04-01/#3421733

以下引用・・・・・・・・・・・・・・・・・・

CrtSetDbgFlagの力でメモリリークを撲滅!
使い方は簡単。
まず
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

その後Main関数の最初に
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

を記述するだけで、デバッグ終了時に、何番目のnewで得たメモリがリークしているか出力してくれます。
後は
_CrtSetBreakAlloc( n );
でn番目のメモリ確保にブレークポイントをセットして、それが何なのか確認してやればオッケー。
もっと早く知ってれば楽できたのにー
0358名前は開発中のものです。2006/09/22(金) 03:24:51ID:hMj4THWP
>>354
なんで突然そんなこと言い出すのか分からんが、そんなネタは散々既出で
NVIDIAなんかが計測したデータも公表している。
っていうか、頂点バッファに書き込む処理なんて無視できるほど小さい。
それよりDrawPrimitiveのオーバーヘッドが物凄くでかい。
0359名前は開発中のものです。2006/09/22(金) 03:33:55ID:bWdUmn2S
>341
手を入れていくって……
現時点でバグってるって言いたいんだが。
FILOで使わないとまともに動かない。

この設計の拙さ、コンシューマーの人というかもっと若い、中とか高ぐらいに感じる、
0360名前は開発中のものです。2006/09/22(金) 06:33:42ID:AFaA2CK2
>>358
まあ、どっちにしてもシェーダごとテクスチャごとに切り替えるしかないんだけどな。
1回でやれも糞もシェーダが違うんだから、DrawPrimitive呼ぶしかないって状況のほうが多いな。
■ このスレッドは過去ログ倉庫に格納されています