[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 04/29 17:34 / Filesize : 141 KB / Number-of Response : 626
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part21 【C】



1 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:39:57 ]
前スレはカスしか居ないので廃棄の方向で。

※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。


348 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:42:13 ]
DirectMusic8で音鳴らしてるんだが
エラーでないのに音が鳴らないときとかあって困る

DirectMusicLoaderは1つしか使うなっていうから
1つしか使わないようにコードかえたが
やっぱり音が鳴らないときがある

349 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:49:49 ]
>>346
だせぇなゆとりにもほどがある

350 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:02:52 ]
>>348MIDI?WAV?そもそもキミのPCは正常に音は再生できてるのかい?

351 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:11:26 ]
>>349
みんなできててすげーな
これでも高校のとき成績は理系でトップクラスだったんだぞ

352 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:18:12 ]
>>351
ケツからだろ
夢みんな

353 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:32:02 ]
そもそも発想がイケてない
画面に何か出てるサンプルからみろよ

っていうかそこまでアフォならちょっとしたゲームを作れる入門書から買ったほうが速いだろ?
VCとかDirectXとかもうダウンロードしてきたのか?

354 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:37:27 ]
VC++もSDKももうある
サンプルを改変して.xを表示することくらいはできた
自分で1から作ることができない。"概念"さえ掴めばパッパといける気はするが

355 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:41:07 ]
>>350
WAV 正常に再生できてるよ
DirectSoundのサンプルはちゃんと再生されるけど
DirectMusicのサンプルは再生されないときがある
ワケワカラン
おとなしくDirectSound使いたいところだが
SDKのVerがアレなので(ry


>>346
WIN32APIプログラムとかの入門をとばして
いきなりDirectXの入門書を見てたりしないか?


356 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:52:36 ]
>>354
なんだできてんじゃん

>自分で1から作ることができない
1からってどういうこと?
なにもみないで書くって意味だったら10年やってる俺でも無理だ
テキトーに必要なもんかき集めてぺたぺた貼って動かすぐらいならできるがな
初期化処理の書き方なんてその時代時代でやることかわるし
大事なのはサンプル理解して応用していける力なので
そういう自分で・・・っていうのは必要ない
まずはなんでもいいからゲームを作ってみろ
それ以外のことは無駄だから考えるな
そうだ、テトリス作れ3Dテトリスな(ゲーム的には2Dの)ハイ決定さっさと作れ



357 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:31:25 ]
頭が悪い奴って勉強頑張れるらしい

358 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 03:52:30 ]
ID3DXSpriteはIDirect3DDevice9のように2つのテクスチャを合成してから表示させたり出来ないんでしょうか?

359 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:18:22 ]
質問です
Direct3Dで線分を描画したいんですけど、どうすればいいんでしょうか?

360 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:23:30 ]
これはググレカスといわざるを得ない

361 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:31:36 ]
DrawPrimitiveで引数にLINELIST

362 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:58:38 ]
なるほど、DrawPrimitiveでできたんですね
ありがとうございました

363 名前:デフォルトの名無しさん [2009/01/30(金) 23:00:59 ]
DirectXのプロジェクトってユニコードビルドにしないとだめなのでしょうか、
単にデフォルトがそうなっているだけなのでしょうか?
チュートリアルのプロジェクトがデフォルトがユニコードになってます。

364 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:15:07 ]
サンプルフレームワークのDXUTがUnicodeビルド前提ってだけだ。
DirectX SDK使う分にはどっちでもいいよ。

365 名前:デフォルトの名無しさん [2009/01/31(土) 01:40:58 ]
トンクス!

366 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:19:59 ]
中国人ですらこれ位作れるのにお前らときたら

ttp://www.amazon.cn/mn/detailApp?qid=1232375855&ref=SR&sr=13-1&uid=168-9317868-9331419&prodid=pcgm812027



367 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:33:34 ]
画面にピクセル単位で指定して描画したのですが

D3DFVF_XYZRHWで描画したポリゴンではできるのですか?

368 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:38:10 ]
画面にピクセル単位で指定して描画したいのですが

D3DFVF_XYZRHWで描画したポリゴンではできるのですか?

訂正ですすいません

369 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:40:31 ]
>>366
ただのBitBltじゃん

370 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:45:50 ]
既に描画したポリゴンでできるのかと聞かれても、よくわからない。
D3DFVF_XYZRHWを使って作った頂点バッファだったら簡単にできると思う。

>>369
どういうこと?話が見えないんだけれども

371 名前:368 mailto:sage [2009/01/31(土) 18:50:16 ]
>>370

レスありがとうございます

とりあえずやってみます><

372 名前:371 mailto:sage [2009/01/31(土) 20:13:11 ]
タイトル画面を表示させようと思い試しに作ってみました

appleloader.bbsnow.net/pic_loader/nomal/html/4441.html

上の画像は512*512のテクスチャをD3DFVF_XYZRHWを使って作ったポリゴンに貼り付けて
表示させたやつです

下の画像は1024*768のテクスチャを・・・

512*512のほうは正常に描画されるのですが1024*768のほうは変になってしまいます

これはDirectXが2のべき乗の大きさのテクスチャしかサポート?していないからですか?
他に理由あったら指摘お願いします

373 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:17:52 ]
なんで1024×1024で試してみてから質問しないのですか?

374 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:23:01 ]
>>373

1024*1024で貼り付けてUVで調整したら解決しました

お手数掛けて申し訳ありません

375 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:23:34 ]
テクスチャの画像はどうやって作ってるの?
それのために呼び出したAPIを全部調べたの?

376 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:30:33 ]
D3DXCreateTextureFromFileEx です

API調べてませんでした

次から調べてから質問します 申し訳ございません



377 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:02:43 ]
DirectXに、次はねぇ・・・

378 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:09:12 ]
if(diks[DIK_UP] & 0x80) {
m_dir = FOR;
Sleep(500);
}
DirectInputでキーボードから入力値を取得しています
Sleep()を抜くととてつもない速さでカーソルが移動してしまいます
Sleep()を使うとほかの処理も止まってしまうので
他の処理をとめないで同じようなことできる方法ありませんか?

379 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:50:11 ]
押しっ放しじゃなくて
押した瞬間だけ検出するようにしろよ

380 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 01:24:16 ]
>>378
マルチ

381 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 02:41:44 ]
D3DPRESENT_PARAMETERSのPresentationIntervalをD3DPRESENT_INTERVAL_ONE
にするとリフレッシュレートに勝手にあわせてPresentが行われまする。
普通1フレーム当たり1/60秒になるので、待たせたい秒数になるように
フレーム数をカウントして、一定数ごとにカーソルを移動とかじゃだめ?
間抜けな回答してたらどうしよう・・・。

382 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:11:24 ]
>>381
SDKのサンプルみろ
それが一番速い
設定選べるようになってるサンプルあるだろ?

383 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:13:23 ]
> 普通1フレーム当たり1/60秒になるので、

とはかぎらない。

384 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:16:10 ]
まあ、だいたい液晶だからなるっちゃなるなw

385 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:17:04 ]
よくいるよね、一般的な例の話をしてるのに特殊な例を持ち出してこれは違う!って言う奴。
そんなことは百も承知だってのに。 そんなに自分が物知りだってひけらかしたいのかね。

386 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:29:04 ]
www-06.ibm.com/jp/domino04/pc/support/Sylphd03.nsf/jtechinfo/SYJ0-02925C4




387 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:30:52 ]
>>386
>>385を読めばそれが反論になってないことは理解できるだろ、馬鹿?

388 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:49:27 ]
お前らよくこんなカス共の質問に回答してやれるなw

389 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:52:54 ]
そもそもマルチだしな。

390 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 07:07:06 ]
60にすると具合悪い事はままある

391 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 14:17:41 ]
V-Syncって普通自前でやるのかな?

392 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:07:32 ]
>>382の言ってるサンプルがどれかわかんなかったw
よく調べたらうちのはディスプレイモードによってリフレッシュ
レートが56〜75の間で4種類くらいあるから、フレーム数決め打ち
だと環境によって変わっちゃうなあ。>>386は50Hzだったし。
QueryPerformanceCounterとかからミリ秒算出して、前のカーソル
移動時の時間と比べて一定時間たったら再実行とか。だめ?だめ?

393 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:09:49 ]
液晶でも最近のフルHDのTVにつなぐとデフォが24Hzになったりするしな。

394 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:24:32 ]
QueryPerformance系使うくらいならtimeGetTime()の方が制約が少なくてらくだけどね
どうせミリ秒単位を扱うわけだし

395 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:30:29 ]
DirectXのVSyみそなんかリフレッシュレートっぽい
時間でウェイトかけてるだけだから。
ゲーム機の実Vクロックでループ回すのとはわけが違う。

396 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:32:20 ]
>>395
タイマでウェイトかけるのはウインドウモードのときだけだよ。



397 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:37:00 ]
>>392
>サンプルがどれかわかんなかったw
全部見ろよ

398 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:38:53 ]
サンプル連呼されても初心者にはわからんものだよ
頭の固い奴にはそれがわからんのです

399 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:39:41 ]
ゲームで複数のXFileを読み込むときのロード時間が気になっているのですが
これを高速化したりするのは可能でしょうか?

ネットで調べたところ、一度DirectXの「Xファイル読み込み関数」で
ロードしておいたメッシュデータをバイナリで保存して、次回起動時に
そのデータを直接読み込むという手段を取られていた方がいるのですが
具体的にどうやるのでしょうか?また、本当に早くなるのでしょうか?

D3DXLoadMeshHierarchyFromXなどのXファイルロードルーチンはそのマシン
で描画が早くなるようにロードしたメッシュを最適化しているという
話を聞いたことがあるので、このやり方で本当にロードが早くなるのか
心配です・・・。

どなたかXFILEのロードの高速化について詳しい人がいたらアドバイスを
お願いします。

400 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:36:01 ]
どれだけ速くなるかは知らないけど
頂点バッファとインデックスバッファ、あと属性テーブルみたいなの取得すればいいじゃん

401 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:57:21 ]
>400
ありがとうございます、階層化されたメッシュの場合にかなり面倒そうですが
今度の週末にでも一度組んでみようと思います。

402 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:55:43 ]
>>401
最近その問題(遅い)にぶちあたったが、遅いのはアニメーションのロードだった
アニメーションのロードだけ自前でやるのお勧め
メッシュのロードはそこそこに早かったよ

403 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:21:39 ]
カメラの回転での質問です。

横回転は問題ないのですが、縦回転すると90度を超えると
急に視界が反転してしまいます。

90度になったらD3DXMatrixLookAtLHのpUpを逆方向にすると
縦回転だけする場合は良いのですが、
少しでも縦回転した状態で横回転すると、視点がぐるぐる
変に回ってしまいます。
どうすれば良いでしょうか?

404 名前:403 mailto:sage [2009/02/03(火) 00:32:03 ]
すいません
横回転が加わっている状態で縦回転すると、でした。
横回転はどの場合でも普通に回転してくれます。

405 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:12:25 ]
まわす順番がおかしいんじゃねーの?
とりあえずその部分のコード貼れや


406 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 02:39:51 ]
D3DXMatrixLookAtLHの引数で回転するんじゃなくて
注視点を原点とするカメラのローカル姿勢を回転させて
そこからビュー行列を逆算すればおk



407 名前:403 mailto:sage [2009/02/03(火) 06:23:07 ]
>>406
すいません具体的にどのようにすれば良いでしょうか?
今現在は

D3DXMatrixRotationX(&mat, g_CameraAngle.x);
D3DXVec3TransformCoord(&g_Camera.vecEyePt, &g_Camera.vecEyePt, &mat);

という感じでカメラの座標を変換してから

D3DXMatrixLookAtLH(&matView, &vecEyePt, &vecLookatPt, &vecUpVec);
pDevice->SetTransform(D3DTS_VIEW, &matView);

でカメラ位置を変更しています。

408 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:04:16 ]
// カメラの初期姿勢(視点(0,0,-10)、注視点(0,0,0)の場合)(変更しないで保持する)
const D3DXVECTOR4 vecEyePt(0,0,-10,1) ;
const D3DXVECTOR4 vecLookatPt(0,0,0,1) ;
const D3DXVECTOR4 vecUpVec(0,1,0,0) ;//ここだけw成分が0であることに注意(回転のみ反映)

// 初期姿勢からどれくらい移動したいかの行列
// 回転だけでなく拡大縮小移動なども合成できる
D3DXMatrixRotationY(&mat, g_CameraAngle.y);

D3DXVECTOR4 Eye, Look, Up
D3DXVec4Transform ( &Eye, &vecEyePt, &mat ) ;
D3DXVec4Transform ( &Look,&vecLookatPt, &mat ) ;
D3DXVec4Transform ( &Up, &vecUpVec, &mat ) ;

D3DXMatrixLookAtLH(&matView, (D3DXVECTOR3*)&Eye, (D3DXVECTOR3*)&Look, (D3DXVECTOR3*)&Up);


もうちょっとスマートなやり方あるけどそれは少し考えればわかるよね

409 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 18:17:31 ]
最初はスマートなやりかたより理解しやすさを追求すればいいじゃない

UpVectorが0成分だと気づかなくて
3日くらい悩んでたのを思い出した

410 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:00:34 ]
>402
ありがとうございます、時間が取れたのでアニメーションの書き出しを
試してみたのですが、アニメーションコントローラにアニメーションデータの
実体が見当たりません。

アニメーションデータの実体とサイズはどうやって取得したら
宜しいのでしょうか?

411 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 20:59:38 ]
>>410
sizeof()じゃだめ?

412 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 05:07:11 ]
Xファイルを読み込むためのD3DXLoadMeshHierarchyFromX関数にて
LPD3DXANIMATIONCONTROLLERというアニメーションコントローラに
値を入れてアニメーションを管理しているんですが、どうもこの
LPD3DXANIMATIONCONTROLLERに実体が無いというかsizeofしても
4の値しか返ってこないんですが・・・。

413 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 05:20:33 ]
C/C++の基礎を勉強したらどうかね?

414 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:22:41 ]
DirectXの前のCの本読んだほうがいいなコレは。

415 名前:412 mailto:sage [2009/02/04(水) 09:57:16 ]
日頃の勉強不足を晒してしまい申し訳ございませんでした。
DirectXでゲームを何本か作った事はあるのですが、DirectX側で
保持しているアニメデータを直接いじった経験が無く、ネットで色々
調べてみたのですが、どうにもお手上げな状態です。

アニメデータ等が読み込まれているメモリ配列部分がどこにあるのか
皆目見当がつかないのです。
なにかアドバイス等もらえないでしょうか・・・?

416 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 11:47:54 ]
>>415
頭に LP がついているのは、ポインタだ。
ポインタは(32bitOSなら)4バイトで当然。
あと、アニメーションコントローラーの内部が確保したメモリーに直接アクセスする手段はない。
AnimationSetを取得したり、そこからさらにAnimationを取得したりという間接的な手段でアクセスするべし

あと、AnimationControllerをいじるのはやめたほうがいいぜ。
メモリーリーク含め、バグが多すぎる。
例えば時間0の情報を書き換えると、アニメーションが正常に行われなくなる。
取得したAnimationSetを、他のコントローラーにセットしてもまともに再生されない。
Animationを削除してから追加すると、メモリーリークする。などなど



417 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:40:57 ]
ウィンドウの左端を画面外に移動させると画像も画面外から描画されることを期待していたのですが
画面端から表示されてしまいます。
画面外に移動させてもクライアント座標の(0, 0)から描画させるにはどうすればいいのですか?

// これだとウィンドウの左端が画面外に出たときに(0, 0)から描画されない
LPDIRECT3DDEVICE9 pD3Ddev;
pD3Ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
pD3Ddev->BeginScene();
Draw();
D3Ddev->EndScene();
if( FAILED(pD3Ddev->Present(NULL, NULL, m_hWnd, NULL)) )
{
pD3Ddev->Reset(&g_pDirectX->d3dpp);
}



418 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:24:28 ]
つーかアニメデータなんて自分用の形に吐き出して自分で管理クラスつくれよ

419 名前:デフォルトの毛無しさん mailto:sage [2009/02/04(水) 19:49:35 ]
>>417
Presentの引数を全部NULLにするとか。

ごめん、勘で言った。

420 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:46:56 ]
>>417
ウィンドウサイズを変える毎にクライアント領域のサイズに合わせてデバイスを作り直す

421 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:51:39 ]
デスクトップ領域からウィンドウが外れたときの話だと思うが

422 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:56:26 ]
無知発見。

423 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:51:27 ]
>>417
そのソースコピペ?
コピペじゃないならコピペにしてくれ。
他にも書き写しのときにミスがありそう。

ああ、あと、俺の環境では画面からはみ出しても普通にクライアント座標の端っこから描画されるぞ。
はみ出した部分は画面外だから当然見えない。
<環境>
WindowsXP Home Edition SP2
DirectX 9.0c (4.09.0000.0904)
DirectX SDK Novemver 2007
こんぱいら BCC 5.5

424 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:57:09 ]
だからクライアントサイズとデバイスサイズが合ってないとそうなるんだよ

425 名前:403 mailto:sage [2009/02/04(水) 23:06:07 ]
>>408
とても参考になりました
わかりやすいコメントまでつけてくださって
本当にありがとうございます

426 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 07:31:39 ]
DirectinputのDIK_LEFTとかを引数で渡したい場合は

どうやるんですか?

intなら

foo(int i);

foo(??? DIK)



427 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 07:45:17 ]
BYTEでいいんじゃね?
>Dinput.h に定義されているキーボード デバイス定数は、キーボード デバイスの
>データ パケット (256 バイト配列) 内でのオフセットを表す。

428 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 07:52:20 ]
ありがとうございます><

429 名前:412 mailto:sage [2009/02/05(木) 08:21:42 ]
>416
丁寧な解説ありがとうございました。
自前でアニメーションの仕様を0から組むのはあまりにも敷居が高いですし
メモリリークなどが発生してしまうようではどうも面倒の方が多そうですね。

430 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:04:07 ]
現在頂点カラー(0xFFFFFFFF)で描画しているテクスチャを
頂点カラー(0xFF000000)に変更して全く同じように描画、
つまり、テクスチャのポリゴンとの合成方法を加算合成にしたいのですが、
どの設定メソッドを使用すればいいのでしょうか?
ピクセルシェーダを自作すべきなのでしょうか?

431 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:58:25 ]
DirectInputやDirectSoundについて質問です

ゲームループをタイトルとゲームで分けています

タイトルが呼ばれたらインプットデバイス・サウンドデバイスを作る
ゲームが呼ばれたらタイトルを破棄してゲームでインプットデバイス・サウンドデバイスを作る

というやり方でいいでしょうか?

432 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:51:35 ]
>>430
デバイス->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );// 合成元1(テクスチャ)
デバイス->SetTextureStageState( 0,D3DTSS_COLORARG2, D3DTA_DIFFUSE );// 合成元2(頂点カラー)
デバイス->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD );// 合成方法(加算)

433 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:55:41 ]
>>431
タイトルとゲームでウインドウ遷移したりするの?
しないならデバイス作り直さなくてもよくね?
別に作り直ししちゃいけないわけでもないし
そのやりかたでもいいんじゃね?

シーンごとにリソース解放するってならわかるけど
デバイスを無理して作り直す必要はないとは思うけどね

434 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:21:31 ]
>>433

ありがとうございます

435 名前:430 mailto:sage [2009/02/06(金) 13:53:26 ]
>>432
ありがとうございました

436 名前:デフォルトの名無しさん [2009/02/06(金) 16:01:00 ]
最近3Dの勉強を始めた者ですが、質問です。

人間モデルがあったとして、手に別のモデルをくっ付けたい場合は、その座標等を取得する関数のような
モノがあるのでしょうか?

いまいちその辺のスタンダードな取得方法がわからなくて迷走してます。
3Dモデルのノード?に名前をつけれるのでその名前から取得したりするのかなぁと思ったりしてるんですが
どうなんでしょう?

ググッて調べても検索ワードがまずいせいか、その辺がまったくわからなくて…Orz



437 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:06:28 ]
ボーンの座標計算を自前で行えば自由自在

438 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:07:26 ]
一発で座標を取得できるような便利関数は無い
しかし、どんな方法であれアニメーションをさせている限り
ボーンが今現在どんな姿勢をしているかは取得できるはずなので
自力で目的のボーンの変換行列を探せばOk

439 名前:436 [2009/02/06(金) 16:31:55 ]
>>437
>>438
なるほど、モデルじゃなくボーンの方を何らかの方法で調べて
目的の行列が見つかりさえすれば座標が取得できるわけですね。

もやもやした感じが少し晴れました。
その方向で調べてみます。
ありがとうございました。

440 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:48:29 ]
深度バッファの取得方法がよく分からないんだけど
もしかして2回レンダリングするの?

441 名前:デフォルトの名無しさん [2009/02/06(金) 22:08:55 ]
direct X ではベクトルの始点、終点を与えて矢印を引くことできないんだ。。。

(x,y,z)成分が与えられていれば、θ=arctan(y/x)、φ=arctan(z/sqrt(x^2+y^2)
から角度が求められるから、x-Fileで作成した例えばy方向の矢印を順次回転
させて(x,y,z)方向に向ければいいんだろけど(しかし、これもx≒0のときθの
精度が悪くなるからarcsinやarccosに切り替えたり、θが第何象限にあるかを
判定する必要があるから、そう簡単ではない)。

それよりもわからないのは、剛体の3次元運動の角速度は、普通、剛体に固定
された回転座標系ξηζ上で成分表示されている。これをもとに角速度ベクトル、
角運動量ベクトルをワールド座標系上で矢印表示するにはどうしたらいいんだ?

directXの回転変換マトリックスってベクトルを回転してるのか、それとも座標系
を回転してるのか?マトリックスの内容と表示を照らし合わせて確認すればいいが
面倒クセェ。


442 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:34:26 ]
>>440
深度バッファをシェーダで利用したりするのは、DirectX10以降でないとダメ。
それ以前はNVIDIAが独自拡張で別のことに使っていた関係で使えない。

だから9では、MRTで深度値を別のテクスチャに描画して使う。

>>441
なんでいちいちθを求めるんだ。
方向ベクトルがあれば、そこから直接回転行列作ればいいだろう。
ちゃんとベクトルの勉強してたら暗算でできるレベル。

443 名前:デフォルトの名無しさん [2009/02/06(金) 22:51:54 ]
>>442

わかってない。もういい

444 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:09:43 ]
>>443
質問文が長すぎる
簡潔にこれがわからないって最初に書け詳細がその後だ

445 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:56:22 ]
正直、何が聞きたいのかさっぱり分からないけど
ベクトルからその向きになるような回転行列を作りたいって話なら
ここを参考にすればいいと思うよ

ttp://marupeke296.com/DXG_No47_CharacterDirectionMatrix.html

446 名前:デフォルトの名無しさん [2009/02/07(土) 07:25:07 ]
>>444

お前はひっこんでろ

>>446

ありがとう。

directXには任意の軸方向回りに、ある角度だけ回転した場合の
回転行列を求める関数がある。

なので、X-Fileで作成した初期方向のベクトルaと希望の方向の
ベクトルbの外積を求めれば、必要な情報が得られることは紹介
してくれたサイトを見ないでも、しばらくしてわかった。

あとは、World座標系と剛体に固定された座標系の間の座標変換行列
が必要だけど、これはベクトルの回転変換行列と要素が一致するだろう。
(そうあってほしい)




447 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:20:06 ]
>>446
直接 〜が知りたい って文章かけないわけ?

448 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:57:37 ]
もういいから放置しておけよ
こいつが必要なのはDierctXの知識じゃなく日本語の知識だ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<141KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef