鬱だ氏のう DirectX (Part 6)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス
02/10/07 01:00ID:???初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
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)
コピペスマソ
0448名前は開発中のものです。
02/11/07 10:15ID:???変更する点があるとするならば、キーコンフィグをつける点。
0449名前は開発中のものです。
02/11/07 17:05ID:2yv67rKD↑このdevを別のファイルで扱おうと思ったらどうすればいい?
別のファイルで
LPDIRECT3DDVICE8 dev2;
dev2=dev;
てやったら2重定義でゴラされた。
0450名前は開発中のものです。
02/11/07 17:11ID:???Cの勉強をしなおせ
0451名前は開発中のものです。
02/11/07 17:12ID:???0452449
02/11/07 17:35ID:2yv67rKDもう一つ、聞きたいのだがいいかい?
LPDIRECT3D8 d3d=NULL,d3d2=NULL;
2個用意してd3dの方でDirect3dCreate8をする。
その後、
d3d2=d3d;
とする。こうしたら以後の処理はd3dでもd3d2でもどちらを使っても
良いのかだよな?中身をコピーする、すなわちIDirect3Dインタフェースへの
ポインタがd3d2へコピーされるんだからなw
その後、オブジェクトを開放する時はどちらか一方だけリリースを呼び出せばいいんだよな?
ん?
0453449
02/11/07 17:40ID:2yv67rKDよいのかだよな? ×
よいのだな? ○
鬱だ・・・逝こう
0454まっつん
02/11/07 17:48ID:???0455名前は開発中のものです。
02/11/07 17:51ID:???0456名前は開発中のものです。
02/11/07 17:51ID:???はいはい、正解、あってるからさっさと仕事に戻れよ!
休憩時間はおわったんだからさ・・・・・・・・
0457名前は開発中のものです。
02/11/07 17:52ID:???ム版に逝けよ。DirectX以前の問題だ。
0458名前は開発中のものです。
02/11/07 17:54ID:???0459449
02/11/07 17:54ID:2yv67rKD0460名前は開発中のものです。
02/11/07 17:58ID:???人生おしまいだね
0461名前は開発中のものです。
02/11/07 19:17ID:???次はRelease Candidateみたい。
うまく行けば年内に来るかな?
0462名前は開発中のものです。
02/11/07 20:59ID:???d3d2=d3dはまあいいとして、どちらか一方だけReleaseとか頭いたい。
d3d2->AddRef();
d3d2->Release();
だろう
0463名前は開発中のものです。
02/11/07 21:08ID:???0464名前は開発中のものです。
02/11/07 21:26ID:???0465名前は開発中のものです。
02/11/07 21:59ID:???年数なんてかんけーねーよ。
馬鹿はいつまでたっても馬鹿だ。
0466名前は開発中のものです。
02/11/07 22:07ID:???矯正が利かない分タチが悪い。
0467名前は開発中のものです。
02/11/07 23:07ID:???0468名前は開発中のものです。
02/11/07 23:13ID:oHLaAcmh四角形ポリゴンで描画した後に、スプライトで画像を表示させようとしても、
表示できません。
ポリゴンの後ろにスプライトが隠れているようなのですが、これをどうやったら
前に出せますか?
座標変換は行っていません。
0469名前は開発中のものです。
02/11/07 23:38ID:???スプライトのZ位置を前にすれ
0470DirectX9!!
02/11/07 23:44ID:???0471名前は開発中のものです。
02/11/08 14:02ID:mLnGgDjlZ比較ですべて書き込むALWAYSではうまくいかないのでしょうか?
0472アフォプロ ◆P6rBQWtf4.
02/11/08 14:24ID:NMeEcAJoプログラム的に先にスプライトを描画しようとしてたらうまくいかないだろうね。
あとならたぶん描画できる。
0473471
02/11/08 14:33ID:mLnGgDjl勉強になりました ありがとー
0475まっつん
02/11/08 18:43ID:???0476名前は開発中のものです。
02/11/08 20:04ID:???0477名前は開発中のものです。
02/11/08 23:36ID:???何の理由で重くなってるんだか想像つく人います?
それとも、案外これがSquareの実力なのかな。
0478名前は開発中のものです。
02/11/08 23:40ID:???HWでシェーダー使えるの少ないし…
0479名前は開発中のものです。
02/11/09 01:52ID:WtQZiHWM0480DirectX9!!
02/11/09 02:05ID:???0481DirectX10!!
02/11/09 02:33ID:???0482名前は開発中のものです。
02/11/09 06:07ID:???0483名前は開発中のものです。
02/11/09 06:21ID:???学校でDirectX付属のMAX用プラグイン使ったのですがスキンアニメにはならない&テクスチャが貼られないという状態なのですが。
または、ここの方々はどうやってファイル作ってますか?
自前形式と言われたらそれまでなんですが。
0484名前は開発中のものです。
02/11/09 10:27ID:???スペック低いPCなんじゃないの?
アナタのPCがどんなハードウェア構成なのかわかんないから答えようがないよ。
# UOでBantheeチップ使ってると激しく重くなる、とかそういう相性かもしれないし。
0485名前は開発中のものです。
02/11/09 12:37ID:IwFQStjk何を読み込んでも画像が真っ黒に表示されてしまいます。
何か改善策は無いでしょうか。
0486名前は開発中のものです。
02/11/09 13:19ID:???明日秋葉原に来な。そしたら教えてやる。
0487名前は開発中のものです。
02/11/09 13:35ID:???エミュレータで動作してるとか?
0488485
02/11/09 13:44ID:IwFQStjk明日秋葉原へ旅立てば十中八九餓死します。
0490名前は開発中のものです。
02/11/09 15:21ID:???"ペイント"で作成した.bmpを読み込んでもダメ?
0491485
02/11/09 15:29ID:IwFQStjkDxdiagを起動して気づいたのですが、
AGPテクスチャアクセラレータが「なし」になっていました。
もしやこれが原因なのでしょうか?
0492名前は開発中のものです。
02/11/09 15:33ID:???ウエィトつか、ボーンの入れ方がプリレンダと違うから データー転がってないし
モーションデーターもそろわないし
素人プログラマには、手の出しにくい領域だ。よってコンバーターも充実していない
MaxかLWしかないっしょ
0493名前は開発中のものです。
02/11/09 15:42ID:???苦労しました。
0494名前は開発中のものです。
02/11/09 16:15ID:???どういうのがあるかねえ
Maxのエクスポータが王道か?
0495名前は開発中のものです。
02/11/09 16:22ID:???微妙に用語が変なのは気のせいか?
0496名前は開発中のものです。
02/11/09 16:26ID:???0497名前は開発中のものです。
02/11/09 16:43ID:???0498名前は開発中のものです。
02/11/09 17:06ID:???自前で設定し直すしかなんですか?
0499名前は開発中のものです。
02/11/09 17:34ID:???細かいのは次の描画時に設定されるからどうでもいい
0500498
02/11/09 17:54ID:???リセット掛けるとStateBlock消滅するし、一つ一つGetRenderStateするのもなぁと思い、
ステートにもMANAGED見たいな機能がないかなぁと思って聞いてみました。
自前で用意するとなるとそれなりに頭を使わなきゃいけないので。
0501名前は開発中のものです。
02/11/09 18:14ID:???0502483
02/11/09 21:31ID:???ツール高い&やりにくい、自作モーションエディタ作るよりは楽かなと思ったけど逆にややこしそうですね。
パーツ毎に呼び出してmikotoあたりでモーション呼び出したほうが楽かな。
返答ありがとうございました。
0503名前は開発中のものです。
02/11/09 21:44ID:???ないってことだな。
頑張ってつくってくれ>>483
0504名前は開発中のものです。
02/11/10 00:11ID:???StateBlockはどこかで一度は設定しないといけないんだから、ロストしたら
もう一度設定する関数を呼べば良いだけ。
0505498
02/11/10 00:48ID:???リセット前にCreateStateBlockでガポッっと取って
リセット後にApplyStateBlockでドバッと適用出来ないかなと考えた訳でして。
それに代わる楽な方法はないものかと聞いてみた次第です。
あまりリセットを考えた作りにしたくないなぁと・・・
ある程度のことはPOOL MANAGEDでなんとかなりそうだし。
出来ないのであればそれしかないんですけどね。
0506名前は開発中のものです。
02/11/10 01:00ID:???フラグまとめた構造体でも作って それをvector配列にでもstackしておいて
リセット時は再設定とか?
物体毎に直書きは駄目だろ?
0507名前は開発中のものです。
02/11/10 01:02ID:???0508名前は開発中のものです。
02/11/10 07:47ID:???0509名前は開発中のものです。
02/11/10 11:28ID:???「高い」だけなら、MilkShape3Dって言う安いツールがある(20ドル)。他は
解決しないけどな。30日間は無料で使えるから、試してみる?
0510名前は開発中のものです。
02/11/10 11:29ID:St+9OfWzレンダリングステータスなんて物体毎に変更でしょ?
俺的にこんなものの変更に速度気にしてたら何も作れないと結論つけましたが
あと速度のことではテクスチャフリップも俺的に気にしないつーすたんすなんすけど。
だからステータスは全体で使う奴を憶えとくだけだけど
0511509
02/11/10 11:50ID:???・頂点数が多いものはインポートできない(1000くらいはOK。限界は不明)。という制限が
あるので、レジストする前に無料期間で確認しよう。
・ワンスキンの場合、ウェイトは0%か100%しか設定されないみたい。これがX用の
エクスポートプラグインの仕様なのか、アプリ自体の限界なのかは不明。
・メタセコでモデルを作るなら、メタセコでは「3DS形式で保存」し、インポートすると
テクスチャ座標が反映されて便利。オブジェクト分割の情報もグループとして反映
される。オブジェクトの名前は半角英数にしよう。
>>507
Reset呼び出し直後に必ずステート設定しなおしのほうが、シンプルで
良いと思われ。
0512名前は開発中のものです。
02/11/10 12:40ID:St+9OfWzと、思ったら全くかわらないや速度。
毎ふれーむ設定採用決定。
だれかおそくなったひといる?
0513名前は開発中のものです。
02/11/10 14:14ID:???アフォなドライバのデバッグには付き合いたくないし
0514名前は開発中のものです。
02/11/10 14:45ID:???何でですかね?
0515511
02/11/10 15:00ID:???俺へのレス?違ってたらスルーして。
毎フレーム呼び出すのはPresent。俺が書いたのはReset。字面が似ているから
読み違えたかもしれないが。
Resetの後は、どうせパフォーマンスが落ちてるんで、使う使わないに関係なく、
全てのステータスを設定しなおしてる。理由は>>513と同じ。
0516がんばります
02/11/10 20:24ID:Ojm0qAse一応自分で一通り探したのですが、リンク切れとか
説明不足とかが多かったので、よろしくお願いします。
0517名前は開発中のものです。
02/11/10 20:37ID:p3Uh3pyT0518名前は開発中のものです。
02/11/10 20:49ID:???すいません。知らないです。
0520名前は開発中のものです。
02/11/10 22:31ID:???0522がんばります
02/11/10 23:45ID:???偽者ですね。
そんなこと言わないで下さいよ。
0523名前は開発中のものです。
02/11/11 00:46ID:FUv1TWBVウインドウモードで動かしてるんですが、描画領域が他のウインドウなどで
完全に隠れると、CPU使用率が100%になりカーソルまでロックされてしいます。
SDKのサンプルはそんな現象が起きないので自分の作ったプログラムに
問題があると思うのですが、サンプルと見比べても原因がまったく分かりません。
ちなみに描画ルーチンではClearとPresent(NULL...しかやっていません。
何か致命的なことを忘れているのでしょうか?
教えてください。(;´Д`)
0524名前は開発中のものです。
02/11/11 00:51ID:???0525名前は開発中のものです。
02/11/11 00:53ID:???0526名前は開発中のものです。
02/11/11 01:03ID:8CEKfzu00527523
02/11/11 01:18ID:???ソースの全体を乗せるわけにもいかず…
とりあえず大まかな説明を。
PeekMessageして空の間レンダリングするようにしています。
初期化もWM_CREATEでは無くCreateWindowでハンドルが帰ってきた段階で
やっていています。
ウインドウプロージャはWM_SIZEとWM_DESTROYくらいしか引っ掛けていません。
directxを呼んでいるのは一つのスレッドだけです。
レンダリングの部分は
d3d_dev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_COLORVALUE(.5, 0, 0, 1), .0f, 0.0f);
d3d_dev->Present(NULL, NULL, NULL, NULL);
削って実験してこれだけです。
この2行を取ると重くなりません。
こんなところなんですが…
0528名前は開発中のものです。
02/11/11 01:23ID:???0529523
02/11/11 01:33ID:???CreateDeviceでD3DCREATE_SOFTWARE_VERTEXPROCESSINGでは
大丈夫なようです。
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
だと重くなります。(描画領域が1ピクセルでも表示されていれば大丈夫)
SDKのサンプルでd3dapp.cppのCreateDeviceの部分にに
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
共に指定してやってみましたが同じような現象は起こりません。
ただし、d3dapp.cppを使っていないTutorialsのサンプルでは
現象が再現します。
自分のプログラムはd3dapp.cppは使っておらず、Tutorials見たいな簡単な
作りになっております。
しかし、d3dapp.cppがどうやってこれを回避してるのかさっぱりです。
D3DPRESENT_PARAMETERSまで一緒にして試しては見たんですが…
0530523
02/11/11 01:40ID:???前はこんな感じで引っ掛けていました。
case WM_PAINT:
win->OnPaint();
ValidateRect(hWnd, NULL);
return 0;
でもどうもぁゃιぃので今は取っています。
BeginPaintなんかも入れて試したんですが変わりませんでした。
一人で長々と書いてすいません。
0531名前は開発中のものです。
02/11/11 01:47ID:???プロージャの最後で
return defwinproc(hoge,hoge〜 よ?
0532523
02/11/11 01:57ID:???DefWindowProcしてますよ〜
ウインドウ管理の部分は他のプログラムの奴の使い回しですから、
そこで重くなっているとは考えにくいです。
0533名前は開発中のものです。
02/11/11 02:01ID:???defWinproc通さないでreturn 0しちゃってるじゃん
0534名前は開発中のものです。
02/11/11 02:02ID:???つか、他の部分はちゃんとdefwin〜通してからreturn してるか?
0535523
02/11/11 02:09ID:???元々は全てbreakでdefwin行くようにはしてたんですが。
0536名前は開発中のものです。
02/11/11 02:29ID:???原因が良く分からない部分でエラーとなってしまいます。
LPDIRECTINPUT8 pDInput;
LPDIRECTINPUTDEVICE8 pKeyboard;
HRESULT hr;
hr = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&pDInput, NULL);
if(FAILED(hr)) return false;
hr = pDInput->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);
if(FAILED(hr)) return false;
hr = pKeyboard->SetDataFormat(&c_dfDIKeyboard);
if(FAILED(hr)) return false; // ここでreturn false
このようにしてDirectInputを設定したのですが必ず最後の
SetDataFormat(&c_dfDIKeyboard)で失敗してしまいます。
普通に使用できているキーボードを使用しているのですが、
この場合どのような原因が考えられるのでしょうか?
どうかよろしくお願いします。
0537名前は開発中のものです。
02/11/11 02:46ID:???エラーの戻り値を調べてみた?
0538名前は開発中のものです。
02/11/11 03:18ID:???サンプルはちゃんと動いてるの
0539名前は開発中のものです。
02/11/11 07:39ID:???わからないが、
WaitMessageしてないとか
Sleep(0)入れてみるとかじゃない?
0540名前は開発中のものです。
02/11/11 13:25ID:9PgLbw0eIDirect3DDevice8::Clearを実行したところアプリケーションが
終了してしまうので色々試していたのですが、
例外を捕捉してみたところ、捕捉できてしまいました。
try {
pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0, 0);
} catch(...) {
// ここへくる
}
DirectXのドキュメントを見ても例外が起こるということは書いておらず
どこかで変な処理でもしてしまったのかと思うのですが
どのような場合に例外が起こるのでしょうか?
0541名前は開発中のものです。
02/11/11 13:40ID:???pD3DDeviceがNULLとか…
0542名前は開発中のものです。
02/11/11 15:59ID:???サンプルは動くのかサンプルは.
0543名前は開発中のものです。
02/11/11 16:37ID:???全然読まねー奴っているよな。
0544名前は開発中のものです。
02/11/11 18:10ID:???0545名前は開発中のものです。
02/11/11 18:33ID:Ooxx02A30546名前は開発中のものです。
02/11/11 19:55ID:???まずアナタがどうやっているか(どうやろうとしているか)を書くのが筋でしょう
0547名前は開発中のものです。
02/11/11 20:08ID:???■ このスレッドは過去ログ倉庫に格納されています