鬱だ氏のう DirectX (Part 5)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものですた。
02/07/23 00:32ID:DsnWt/i.初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/ (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)
コピペスマソ
0206名前は開発中のものです。
02/08/06 03:24ID:???OutputDebugString("最適化ばかりしててコミケ落とさないでください!\r\n");
GameMain();
Test_205();
}
0207名前は開発中のものです。
02/08/06 03:55ID:???マジでそこが原因なの?
コメントアウトしてみた?
ついでに蛇足だけど、SAFE_RELEASE(dxutil.h)や
if( texture != NULL )
{
texture->Release();
texture = NULL;
}
したほうがよさげ。
0208205
02/08/06 04:44ID:A065mayA問題のところをコメントアウトにして実行させるとメモリが増えるようなことは起きませんでした。
ためしに、別に小さいプログラムを作って同じ事をさせても同じ現象が起きなかったので
なにか、別のところが間接的に影響を与えているのかな、もう少し調べてみます。
0209205
02/08/06 05:09ID:???↓こいつが原因でした、何であーなのかわからんが、やっと寝れる。
/*
* デバッグ ヒープのフラグを設定して、ヒープのリンク リストに解放
* したブロックを保持します。これにより、解放したメモリの不注意な
* 使用を検出できます。
*/
int tmpDbgFlag;
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpDbgFlag);
0210名前は開発中のものです。
02/08/06 05:25ID:???メインループで確保と解放を繰り返してんのか!?Σ( ̄▽ ̄;)
0211202
02/08/06 06:26ID:???>>203-204
そう思ってドライバ更新したにもかかわらず>>202の状況なわけですよ。
ウィンドウモードなら何の問題もないので当面フルスクリーンナシでいくかぁ…
#フルスクリーンで遊ぶユーザーが多いと聞いたが…
0212名前は開発中のものです。
02/08/06 06:29ID:gQhH5TM60213名前は開発中のものです。
02/08/06 08:21ID:mY.DofG6DirectXには直接関係ないけど、ここお気に入り〜
0214名前は開発中のものです。
02/08/06 09:47ID:???_CRTDBG_DELAY_FREE_MEM_DFのフラグがあると、メモリ領域は解放フラグをつける
だけで、実際には解放しません。この場合、解放するのはプログラム終了時。
メモリ不足の状態を再現するのに使えるらしいです。
MSDNにもちゃんと書いてあるので読もうね。
ちなみに、_CRTDBG_LEAK_CHECK_DFはプログラム終了時にリークがないかチェックします。
0215◆KeJ3pYYQ
02/08/06 09:51ID:HhMbK2lEそれをxfile書き出しして表示させてるんですが、ぴったり二つくっつけてもまん丸
に見えません(少し縦に細く見えて、つなぎ目が目立ちます)。
最初から球状のオブジェクトなら、ちゃんと丸く見えます。
半球状の物を二つくっつけて、ちゃんと球状のオブジェクトとして見せるにはどうすれば
ヨイのですか
0216127
02/08/06 09:54ID:???ぐぁ。という事は、Dx8でフルスクリーンで画面更新しつつ
GDIを使うのは不可能ってことですか。
どうしても必要なら、DX7でやるかDX9を待つしかないのね…(;_;)
またはそれぞれ自前で実装するってのもあるか。
0217名前は開発中のものです。
02/08/06 11:52ID:???境界の法線をなんとかしる
メタセコにその機能がなければどうしようもないんじゃない?
もしくは法泉のつじつまが合うように工夫しる<だめかも
0218名前は開発中のものです。
02/08/06 11:54ID:???0219◆KeJ3pYYQ
02/08/06 14:16ID:HhMbK2lE>メタセコにその機能がなければどうしようもないんじゃない?
なんて事を言うんですか!じゃあどうしろと言うのですか!!!
ところで、xfileをロードした後にプログラムで球を二つに割るというのはどうでしょう
0220名前は開発中のものです。
02/08/06 15:15ID:???0222名前は開発中のものです。
02/08/06 18:52ID:???割れてない状態のXファイルと割れた状態のXファイルを2つ用意するとか。
0223名前は開発中のものです。
02/08/06 19:00ID:???0225◆KeJ3pYYQ
02/08/06 20:44ID:w4Cz3L1Qすんません、そこは失笑するところなんです
あとポリゴンを細かーくするとかっすかね・・・
0226名前は開発中のものです。
02/08/07 02:58ID:???0227名前は開発中のものです。
02/08/07 04:32ID:???そういう例外的なことが出来るほどプログラムが抽象化されてないんです
0229名前は開発中のものです。
02/08/07 11:39ID:???まあどっちにしても変則的になるが
0230名無しサソ
02/08/07 13:00ID:???中心点と円の表面の点を通るベクトルを法線にすれば、継ぎ目は見えないのでは?多分。
0231名前は開発中のものです。
02/08/07 13:38ID:???法線はポリゴンの三頂点の内積とは限らんの?
法線をxfileに持たせるとか持たせないとか。その辺がよくわかんないズラ
0232名前は開発中のものです。
02/08/07 13:49ID:???DirectXのヘルプにも載っていること
尼ちゃんも風呂も関係ない
0233名前は開発中のものです。
02/08/07 14:19ID:???当たり前の結論が当たり前に出ただけに留まりましたな。
0234名前は開発中のものです。
02/08/07 14:42ID:???0235名前は開発中のものです。
02/08/07 15:13ID:???取りあえず高校から勉強しなおせ。話はそれからだ。
0236名前は開発中のものです。
02/08/07 15:19ID:???0237名前は開発中のものです。
02/08/07 15:44ID:???0238名前は開発中のものです。
02/08/07 15:50ID:???0239名前は開発中のものです。
02/08/07 15:57ID:???0240名前は開発中のものです。
02/08/07 16:09ID:???0241あぼーん
NGNG0242名前は開発中のものです。
02/08/07 16:46ID:???いい機会だから先生に聞いて見ろ。見直されるぞ(w
0243あぼーん
NGNG0244名前は開発中のものです。
02/08/07 16:53ID:???0245名前は開発中のものです。
02/08/07 17:08ID:???(食う)>(食われる)で表記すると、
終了厨 > 知ったか厨 > 教えて厨
0246名前は開発中のものです。
02/08/07 17:31ID:???0247名前は開発中のものです。
02/08/07 18:03ID:???0248名前は開発中のものです。
02/08/07 20:27ID:???奴のことかと思った。
0249名前は開発中のものです。
02/08/07 20:34ID:???自分のプログラムじゃないの?
だったら自分で半球の.x fileを書き出すプログラムを書けば済むかと。
0250名前は開発中のものです。
02/08/07 20:39ID:???0251名前は開発中のものです。
02/08/07 20:54ID:???当然法線も違ってくる
切断面に透明ポリゴン置いたら回避できねぇかな?
(DirectXで表示するなら、また別の問題があるけど)
0252名前は開発中のものです。
02/08/07 21:06ID:???だから、その頂点が共有されてない場合の法線の取りまわしについてだよ
0253名前は開発中のものです。
02/08/07 21:32ID:???メタセコの仕様に文句あるなら自前で計算するしか無いじゃん
帰れよ
そうなんですが、実際に出したいのはもうちょっと複雑で、モデラーでないと作れそうにないんだよ・・・
つーか、球にそういうテクスチャ貼ってアルファテストで抜きゃいいじゃんという気がしてきた
0255名前は開発中のものです。
02/08/07 21:59ID:???LPD3DXMESH mesh=NULL;
D3DMATERIAL8 mat;を宣言
Init3D関数内で
mat.Diffuse.r = 1.0f; mat.Diffuse.g = 0.0f; mat.Diffuse.b = 0.0f;
mat.Ambient.r = 1.0f; mat.Ambient.g = 0.0f; mat.Ambient.b = 0.0f;
mat.Specular.r = 1.0f; mat.Specular.g = 0.0f; mat.Specular.b = 0.0f; mat.Emissive.r = 1.0f; mat.Emissive.g = 0.0f; mat.Emissive.b = 0.0f;
としてマテリアルを赤く設定したのち
D3DXCreateSphereで球体メッシュを生成。
Render関数内で
lpD3DDEV->SetMaterial(&mat);
mesh->DrawSubset(0);
とやったのですが、表示される球体は真っ白です。
なぜこうなってしまうのでしょうか?
0256名前は開発中のものです。
02/08/07 22:39ID:???難しく考えるとハマるという良い例になった
0257名前は開発中のものです。
02/08/07 22:57ID:???わからなけりゃフレームワークつかえ
0258名前は開発中のものです。
02/08/07 23:05ID:???IDirect3DDevice8::CreateAdditionalSwapChainの
オモロい使い方てありまへんか
0259名前は開発中のものです。
02/08/07 23:28ID:???ライトの設定がおかしいとそうなった気がする
0260名前は開発中のものです。
02/08/07 23:46ID:???テクスチャ貼り付けちゃえば赤くできるのですが、ちゃんとマテリアル使えるようになりたいと思いまして。
ライトはつかっておりませんが、
InitRender関数内で
lpD3DDEV->SetRenderState(D3DRS_LIGHTING, TRUE);
とすると、画面上のポリゴンが真っ赤になってしまうのです。
じゃあ、球体を描画する前にTRUEにして終わったらFALSEに
しようとおもったのですが、そうすると球体が見えなくなってしまいました。
どうやら、テクスチャを貼り付けたポリゴンのみに作用しているようなのです。
0261名前は開発中のものです。
02/08/07 23:52ID:???アルファブレンディングの設定をFALSEにした後に描画したら
赤く表示することができました。
0262名前は開発中のものです。
02/08/08 01:02ID:???まさかとは思うが、透明度を0にしてないだろうな?
どんな色をつけてライトを当てても透明度が0なら色はつかないぞ。
0263名前は開発中のものです。
02/08/08 02:41ID:???mat.Power=1.0fとやればいいってことですか?
0264名前は開発中のものです。
02/08/08 04:47ID:???あとこれはどうでもいいことだけど、matと略すと行列と間違えるから、
俺はmtrlを使っている。ま、こりゃどっちでもええことだけど。
0265名前は開発中のものです。
02/08/08 04:49ID:???俺はmateだけど(ダサッ
mtrlみたいな一文字飛ばし略語もなんかいやん
0266名前は開発中のものです。
02/08/08 05:03ID:???0267名前は開発中のものです。
02/08/08 05:09ID:???0268名前は開発中のものです。
02/08/08 06:05ID:???Σ( ゚Д゚) mjsk!!
0269名前は開発中のものです。
02/08/08 06:13ID:???マジッスカの略かぁ…。初めて知った
0270名前は開発中のものです。
02/08/08 12:05ID:/HiLzdeIどうすればいいんですか?
0271名前は開発中のものです。
02/08/08 13:15ID:???0272名前は開発中のものです。
02/08/08 13:53ID:???要点をバシッと決めてくれ。
0273名前は開発中のものです。
02/08/08 16:54ID:???0274名前は開発中のものです。
02/08/08 17:31ID:???打ち込むと出てくるうざいアレのこと?
0275名前は開発中のものです。
02/08/08 17:35ID:???ワークスペース - FileViewに、「DirectX」というフォルダを作る
DirectXのincludeファイルをプロジェクトに追加。
そこで追加したファイルは邪魔なので最初に作った「DirectX」フォルダに分けておく
とかすれば、入力支援機能でDirectXの構造体を使えたりも駿河
0276名前は開発中のものです。
02/08/08 20:47ID:???フォルダわけの意義がイマイチ謎
0277>>275
02/08/08 21:11ID:???0279名前は開発中のものです。
02/08/08 22:15ID:???もう十分詳しいと思うぞ。理解力が足りない
0280名前は開発中のものです。
02/08/08 22:36ID:???これ以上詳しくできないよ…
0281277=278
02/08/08 22:36ID:???0282名前は開発中のものです。
02/08/09 03:23ID:???スプライトを使うべきか使わないべきか。
0283名前は開発中のものです。
02/08/09 05:17ID:???いまどき横スク画面は壊滅的にダサくてダウンロードすらされない。
VB厨が垂れ流す駄ゲーと区別つかん。
0284名前は開発中のものです。
02/08/09 06:12ID:???0285名前は開発中のものです。
02/08/10 19:58ID:PD7Pi8C6少しの違いでもステートブロックを作ったら
ステートブロックの数が爆発しました。
ピクセル関連のステートだけですが、それでも64個。
もうひとつの選択肢として、レンダリングステートとテクスチャステージステートの
キャッシュつきラッパー関数を作るのもあります。
みなさんどうしてますか?
0286名前は開発中のものです。
02/08/10 20:39ID:???ステートブロック作っても切り替えを実行しちゃったら変更コストは
あんまり変わらんのでは?
ステートごとにグループ化する努力のほうが効きそうな気がする
0287名前は開発中のものです。
02/08/10 23:57ID:9NCQqQXkどうせDirectX内部のどっかにある変数を切り替えてるだけだろ?
実際のレンダリングやら衝突判定やらにかかる時間に比べたら微々たるものだと思う。
0288名前は開発中のものです。
02/08/11 00:18ID:???いけないからその分遅くなるよ。
CPUとGPUは非同期に並列に動いているから、単純に変数を書き換
える程度じゃ済まない。
0289名無しサソ
02/08/11 00:44ID:???のは、レンダーステートのGetが全て出来ない代わりに、GPUの高いパフォーマンス
を得られると言う認識でいいのかな?
プログラムを検証していて思うんだけど、SoftwareT&L環境下では当然
ながらパフォーマンスが頭打ち。上手く作ればもうちょっと速くはなるだろうけど、
HT&Lには到底及ばない。GeForce3世代になって、その差が目立ちはじめたけど、
皆さんはどの辺のパフォーマンスに主眼を置いてプログラムを作ってるのかな?
最近はHT&Lを前提にしたゲーム(Unrealエンジンとか)も増えているようだけど。
というか、この辺は新しくポリゴン数スレみたいなものを作ったほうが良いですか?
自分みたいなヘタレだと、最新のビデオカードのパワーは手に余る・・・。
0290名前は開発中のものです。
02/08/11 00:46ID:???差がありすぎて両立は無理
0291名前は開発中のものです。
02/08/11 01:14ID:???今年中だと、Soft頂点シェーダは微妙。
Doom3で底上げ期待。
0292名前は開発中のものです。
02/08/11 02:27ID:???CPUが速くなっているからそれで補うってのがメーカーの言い分だけど、
速いCPU使ってる奴がそういう安物ビデオカードを使うとは思えない。
結局、安物ビデオカードを買う奴はCPUも遅いんじゃないかな。
0293名前は開発中のものです。
02/08/11 02:58ID:???たとえば
ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
よりも、
ステートAに切り替え→描画1→描画3→→ステートBに切り替え→描画2→
のほうが高速だよ。
0294名前は開発中のものです。
02/08/11 05:14ID:???ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
はリア厨でもやらんだろ〜
確実に遅い例にはもってこいだがちょっとワラタよ
0295名前は開発中のものです。
02/08/11 05:21ID:???0296名前は開発中のものです。
02/08/11 05:21ID:???つか、時間かけてる間に性能が上がるので最適化いらん(泣
Xファイル使ってるような奴は皆そうでしょ。
細かいコントロール不能だし
そーでなくてもピーク性能ってよくわからんよね
測定方法もなんか難しいつーかコツがあるみたいだし…
0297名前は開発中のものです。
02/08/11 05:30ID:???半透明オブジェクトや、エフェクトで加算合成じゃないビルボード
のZソートで結構ある
0298名前は開発中のものです。
02/08/11 07:01ID:???俺のマシンは出来るだけ前から書くのが一番だ。
Xファイルの連打ってステート変更もしちゃうのか???
そら使いにくい罠
0299名前は開発中のものです。
02/08/11 07:31ID:q2d3/uDwXファイルのテンプレートにAnimationKeyというのがあって、
そのメンバにキーの種類を示すkeyTypeがあり、ヘルプを見るとこの値の意味するところは
0:回転、1:スケーリング、2:位置、3:行列キー
となっています。
ところが、とあるソフトでXファイルを吐き出すと、これが4というものが
出る場合があります。4は一体何を示しているのか、分かる人がいたら教えて下さい。
0300名前は開発中のものです。
02/08/11 07:42ID:???3は登場しない前提で対応するコードが書かれていてない
0301名前は開発中のものです。
02/08/11 07:44ID:???0302名前は開発中のものです。
02/08/11 07:58ID:???0303名前は開発中のものです。
02/08/11 10:10ID:???何気にヘルプを眺めているとD3DXVec3Transformを発見
Coordのほうには「・・・その結果を w=1 に射影する」と書かれているのですが
これは無駄に/wが計算されていたのでしょうか???(普通のトランスフォームだから常にw=1)
まさに鬱だ市悩
0304名前は開発中のものです。
02/08/11 10:35ID:???でも「・・・その結果を w=1 に射影する」が気になる
結局よく解らんので自前にしよう。そうしよう。
やっぱり鬱だ市悩
0305名前は開発中のものです。
02/08/11 13:09ID:aO/cH.IU頂点法線も頂点と同じように回転の重ね合わせで求めるのですかね.
n' = α0*n*R0 + (1-α1)*n*R1
毎フレーム毎ポリゴン外積,正規化していられませんよね
間接ごとに別れたモデルをワンスキンにしようと思ったのですが,LVERTEXにしたらせっかくのワンスキンが台無しかと思いまして.
skinnedmeshサンプルはちょっと読む気になれませんでした.お願いします.
■ このスレッドは過去ログ倉庫に格納されています