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


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

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



1 名前:デフォルトの名無しさん mailto:ライシンマハケン [2008/07/17(木) 13:50:04 ]
1 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/09(水) 09:55:56
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part17 【C】
pc11.2ch.net/test/read.cgi/tech/1207702556/

19 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:17:56 ]
シザリング面倒なら16x16の格子とかにすりゃいいだけのヤカン

20 名前:デフォルトの名無しさん [2008/07/20(日) 18:50:30 ]
>>11

で、それを言って何の参考になる?
マスターベーションでもやってろ、仕様もない糞が。

21 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 14:28:41 ]
D3DXMatrixPerspectiveOffCenterLHを使っているんですが
引数のl,r,b,tはどこの値なんですか?
Nearプレーン(zn)での描画する範囲が幅r-l、高さt-bの長方形ということでいいんですか

22 名前:デフォルトの名無しさん [2008/07/23(水) 16:52:18 ]
カメラの向きを回転したいのですが、縦の回転が出来ません。どうやったら良いのでしょうか?
横の回転は、
D3DXMATRIXA16 m;
D3DXMatrixIdentity( &m );
D3DXMatrixRotationY( &m, 回転量 );
vDir = vLookAt - vEye;
D3DXVec3TransformCoord( &vDir, &vDir, &m );
vLookAt = vEye + vDir;
で求めています。

D3DXMatrixRotationY( &m, 回転量 );
の部分に
D3DXMatrixRotationX( &m, 回転量 );
D3DXMatrixRotationZ( &m, 回転量 );
を追加しても変な動きになってしまいます。

23 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 17:32:20 ]
横回転はY軸を回す。
だったら縦はX軸を回すだろ?
どううまくいかないんだ?

24 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 17:59:29 ]
>>23
現在向いている方向が(0,0,1)として。
Xだけで回転すると正面と真後ろを向いている時は上手く行くんだけど、真横を向くと上下に回転しなくなります。
一方Zだけで回転すると、真横は上手く行くけど正面真後ろがダメになります。

25 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:09:39 ]
そりゃそうだろ。
D3DXVec3TransformCoord()使うとかクォータニオン使うとかでどうか

26 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:53:42 ]
>>25
何故そうなるのかもD3DXVec3TransformCoordを使うやり方も分かりません

27 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:24:37 ]
くだすれの方でも同じような質問あったから除いてみ



28 名前:22 mailto:sage [2008/07/23(水) 22:01:30 ]
調べてみましたがさっぱり分かりません。
XYZと回転マトリクスを1つずつ計算してみたりしましたが、最初よりバグっています。
どう計算したらいいんでしょうか?ソースを書いて貰えると助かります。
根本的に理解できていないなら、その根本的な部分を説明するサイトか書籍を教えてください。

29 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:37:36 ]
XとZの回転量って個々にちゃんと計算してるの?それが不安

30 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 01:47:30 ]
>>28
「一次変換 行列」でググってみて。

メラの行列がわからないって事は、
カメラの行列を作るときに何が起きているかを理解していないって事。
「透視射影行列」あたりでググってみても良い。

行列の本は簡単なので良いから1冊ぐらいは読もうね。
キーワードは「線形代数」ね。

31 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 01:50:35 ]
>>28
個人的なお勧め本は 「リアルタイム レンダリング 第2版」
本の内容を一通り理解して頭に入れとけばどけばまず間違いないと思う。

32 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 05:45:51 ]
>>28
昔、座標系に関してお世話になったサイト思い出して
ぐぐってみたらあってびっくりした

宇治社中
web.archive.org/web/20030405025753/www.cc.rim.or.jp/~devilman/3dCoding/3dCoding.html

なつかしす・・・

文字化けしてたら
メニュー→表示→文字エンコーディング→日本語のなにか
で治ると思う

3Dはまず行列使いにならないと他の話についていけないので
ローカルからワールド、ワールドからローカルへと変換できるようになっておいたほうがいいと思う

33 名前:デフォルトの名無しさん [2008/07/24(木) 12:16:14 ]
>>28
マイクロソフトのフレームワークや書籍のサンプルを筆頭に、何で誰もそのソースを書かないと思う?
xz回転を加えるだけで、ソースが何百行も追加になり複雑になるからだよ。
directxのAPIだけじゃ不可能で、要素を1個ずつsin,cosで計算しないといけないから、行列を根元の部分から理解していないと絶対に作れない。
y軸だけならAPI1行で済む。
そんな簡単にカメラが動いたら、今頃世の中に大作ゲームがわんさか溢れてるよ。
ジンバルロックの問題もあるし、xz回転はしない方がいい。素人にはお勧めしない。

34 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:25:29 ]
つか
カメラまわしてから注視点きめるんじゃなくて
注視点まわせばええんとちゃう?

35 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:38:58 ]
視点と注視点の概念がまだわかってないんじゃないだろうか?

36 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:42:23 ]
いろいろやってみりゃわかってくるね。
でもいきなり数値大きく変えると何がどう影響したのかわかりにくいが。

37 名前:28 [2008/07/24(木) 20:10:17 ]
レスありがとうございます。
皆さんのおかげで、オイラーは難易度が高いので使わない方が良いということが分かりました。
オイラーを止めてクォータニオンを使うことにしたのですが、今度は回転の補間の説明ばかりで平行移動が分かりません。
hikari-hinomoto.hp.infoseek.co.jp/PDF/DX305.pdfにほとんど書いてあるのですが、肝心の部分が書かれていなくて困っています。

void CCamera::Move(const float inFront, const float inUp, const float inRight)
{
// カメラの方向ベクトルを取り出す
D3DXVECTOR3 right(m_View._11, m_View._12, m_View._13);
D3DXVECTOR3 up (※ここは各自考えましょう);
D3DXVECTOR3 front(※ここは各自考えましょう);
// 移動
right *= inRight;
up *= inUp;
front *= inFront;
m_Position += front + up + right;
}

の、ここは各自考えましょうの部分が分かりません。
予想では
m_View._21, m_View._22, m_View._23
m_View._31, m_View._32, m_View._33
ですが、本当に合っているのか分かりません。
これはどこを調べたら分かるのですか?
クォータニオン周りを調べましたが、本のリンクが出てきただけでさっぱり分かりませんでした。
その本も買いましたが、glTranslateを使えばおkとしか書かれていないので、肝心の中身が分かりません。
DirectX版のglTranslateを探せば通るとは思うのですが、理解しないまま進むのも嫌なので。
これはどこをどう調べたら分かるのですか?



38 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 20:20:37 ]
>>37
そんなになんにも理解してない状態でそのレベルの理解を要求されても困るw

39 名前:37 mailto:sage [2008/07/24(木) 20:47:36 ]
自己解決しました。ビュー変換行列を見ていたらありました。

>>38
初心者スレということで、理解できるレベルまでお願いします><

40 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:09:44 ]
>>39
一次変換の意味はわかる?
行列を掛け合わせることをやるとどういう行列が出来るかはわかる?
行列の積に可換性がないのはなぜかわかる?
クオータニオンと行列の違いはわかる?
透視変換行列の作り方は理解している?

上のことを一つずつ解決していけば出来るようになってるはず。

41 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 23:57:18 ]
まあ、そんなとこだよね
まず数学だからなぁ・・・
テキトーにキーワードかき集めてはめてみて→動いた!→OK!
って人間にはならんほうがええぞ
答えを焦り過ぎだ
理解も時間が解決するときがあるべよ

42 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:36:54 ]
DirectX初心者スレなのでDirectXのことで分からなければいくらでも答えるんだけどねぇ。
行列の意味や仕組みや動作すらわからないのは線形代数の本を抱いて寝てくれとしか言えん。

43 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:56:30 ]
教えて欲しけりゃ金持ってこいっつーの

44 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:57:00 ]
つI

45 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:55:21 ]
つD

46 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:51:04 ]
つ ミ
      I

47 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:52:39 ]
           . . I
      (ノ'A`)ノ
      (  )
   , , , , / >



48 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:46:18 ]
あ、でも正直、この辺って感覚的なもんも大事だから
色んな人の本を読むといいと思う

色んな人の色んな行列の解釈を読んだほうが勉強になると思う
実際、ゲームで使うとなったら
この動きはオイラーのほうがよくてアニメーションはクオータニオンで
この動きはこの座標を中心にして極座標で動かして・・・

って条件分岐の荒らしになるのは仕方ねーことだし
汎用座標系クラスなんて無意味なもん作ろうとするとソースがヤバイ行数になって死ぬw

49 名前:デフォルトの名無しさん [2008/07/27(日) 05:33:37 ]
directxとは直接関係なくて悪いのですが・・・

3Dプログラミングを学ぶにあたって、最低限知っておくべき数学・算数を教えて下さい
私頭悪いので、最低限のものでお願いいたします



50 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 05:51:58 ]
高校理系卒業レベルは必須

51 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 06:47:08 ]
>>49
そんな大きな枠で括られても高校数学まではなんでも食えとしかいいようがない
必要になったら必要な分だけ理解すればいいんじゃない?
とりあえず行列とベクトルが必要なのはわかってるんだから
勉強してみればいいんじゃない?

52 名前:デフォルトの名無しさん [2008/07/27(日) 16:27:32 ]
>>51
ありがとうございます
今のところわかっているには、行列・三角関数です
上記2点を理解するためにさらにほかのをやらなきゃならんようですが・・・


53 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:48:35 ]
わかっているのはっていうのは、なにをやればいいかってことです
理解しているというわけじゃありません 

スレ汚しスマヌ

54 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:55:49 ]
4x4行列演算・空間図形・四元数・三角関数・ベクトル演算
この辺は押さえておくよろし

55 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:04:57 ]
質問があります。

30〜60枚を1単位としたアニメーションを表示させたいのです。
1フレームに1枚で、60枚で1秒間のアニメーションと考えてください。
このアニメーションが約20〜30種類あります。

問題は、このそれぞれのアニメを「いつ」「どれを」表示するかが決まっていないのです。
とはいえ、こんなに大量の画像データをメモリにおいておくわけにもいかず困っています。

アニメの表示命令が下った時点でそのアニメをリアルタイムに読み込みする
ように組んでみたのですが、(1フレームに1枚ずつ読み出す)
Textureの読み込みが非常に重く、処理落ちが酷くなってしまいます。

何か有効な手段、ごまかし方など、ありませんでしょうか?
ちなみに使用している画像フォーマットはDXT、DirectXのバージョンは9.0cです。

56 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:37:37 ]
>>55
仕様を聞いてみないとなんとも

アクションゲームのキャラ絵だったら諦めろとしかいいようがないし
ステータス画面のちょっと凝ったサムネイル(アイコン?)だったら
カーソルをロード時間分置いたら表示されるようになってるゲームが多いな

57 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:58:28 ]
1枚のテクスチャに30〜60枚分の画像を収める
サイズにもよるけど



58 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:44:13 ]
インタラクティブな場所でないならムービー化

59 名前:デフォルトの名無しさん [2008/07/27(日) 21:37:36 ]
すいません 質問させてください

directshowがdirectx9の後半(?)から使用できないっていうんで
しかたなくdirectx8でdirectshowやってるんですが

3dの描画にはdirectx9を使用しています

directx9と8の両方が使用されているゲームをPLAYするには

9,8両方のランタイムが必要になるのでしょうか・・・
教えてくださいm(_ _)m

60 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:56:57 ]
9のランタイムが入っている=1〜9のランタイムが入っている

61 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:00:19 ]
1〜9?アホか?

62 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 00:11:29 ]
【狂育部】ソフトウエア興業11【業無部】
science6.2ch.net/test/read.cgi/infosys/1216289288/599

C++の洒落プログラムを落としただけで炎上したんだがwww
読むとかなり面白いw

世の中こんな会社もあるから気をつけてくれw

マジで!

63 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 04:55:59 ]
DirectSoundでループ再生を行う場合に再生開始は曲の開始からでも
ループした際は曲の途中から再生したいんですが、こういうのって
やはり、再生が終わった事を検出して自分で再生位置を指定して…っていう
やり方になるんでしょうか?

それともループ再生用のパラメータ等が存在するのでしょうか?

64 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 05:23:24 ]
回答どうもありがとうございます。

>>56
ちょっと違うけど、「アクションゲームのキャラ絵」という表現が近いです。
扱いとしてはキャラのモーションとかゲームのエフェクトとかになると思います。
やっぱり諦めるしかないですかねー…

>>57
小さい画像なら、それでいけそうですね。
大きい画像(200x200とか)の場合はどうしようもなさそうですが…

>>58
コーデック必須にしたくないので、たぶん無理かと思われます…
無圧縮にするくらいなら、画像全部メモリに持ってろって話になると思いますし。

65 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 10:40:53 ]
>>64
画像を一気に読み込むとして、
どれぐらいのメモリが必要か計算してみると良いよ。
システムメモリで行けそうだったらシステムメモリに確保すればいい。
200x200ピクセル で 60fps、30秒だと 200MB ぐらい。きついね。
ムービーが無難。

無責任なことを書くと、メモリマップドファイルでベタで画像情報をファイルにしておくとか?
出来たとしても速度は出ないと思うけど。

66 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:31:46 ]
>>64
そういうときは普通ポリゴンモデルを使うんじゃねぇの。
毎フレーム分の画像なんてアホな事普通やら無いぞ。
2Dアクションならせいぜい5フレとかで間引くし。

コーデックが云々いうがWindows95とかターゲットにしない限り
MPEG1が再生できない環境なんてないと思うが。

67 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:09:33 ]
もろに2Dゲームが無くなった理由そのものだしな
3Dに比べて、使うメモリに対して表現能力が少なすぎる>2D



68 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:44:11 ]
スパロボのカットインのようなことがやりたい、に100万ペソ

69 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:26:37 ]
そんとき読み込むので十分だろwあんなのw

70 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:27:58 ]
スパロボのはおもいっきり解像度落としてるし、
そもそもツール上でキーフレームアニメのエディットしてるだろ。

全フレーム画像もってるわけがねえ。

71 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:23:56 ]
多数のmeshをマテリアルの設定だけを変えてDrawSubsetしているのですが
描画するmeshの数が1000くらいあってDrawSubsetを一回ずつ呼び出して描画
すると重くなってしまって困っています.
一回のDrawSubsetで一度に描画できたり,あるいはその他の方法で
あまり負荷をかけずに描画するにはどうすればいいか教えてください

72 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 06:12:52 ]
>>71
カメラにmeshは全部入るの?
カメラに入らないmeshはちゃんと省けてる?(=視錐台カリングはちゃんとできてる?)

73 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 06:39:24 ]
>72
はい.カメラに入るメッシュだけDrawSubsetしてます

74 名前:デフォルトの名無しさん [2008/07/29(火) 07:26:32 ]
質問です。
DirectX で描画した上に、ウィンドウコントロール(具体的にはテキストエディット)をおきたいと思っています。
そこで、描画が終わったら必ずウィンドウコントロールも再描画されるように、
下のような感じのメインループを書きました。

for (;;) {
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
if (msg.message != WM_QUIT) {
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
break;
}
} else {
Render();
RedrawWindow(コントロールのHWND, NULL, NULL, RDW_INVALIDATE);
}
}

しかし、まだコントロールがちらつくことがあります。
DirectX の描画と WM_PAINT のタイミングの問題のような気がしているんですが、
こういうとき、どの辺をチェックすればいいでしょうか?


75 名前:デフォルトの名無しさん [2008/07/29(火) 07:39:09 ]
>>73
それで1000個?
ハードにできないことやろうとしてない?
最適化してやっと動く程度ならやらんほうがいいかもよ
マップチップとかなら一つに纏めるとはやいって聞くけど
それがどのくらいかわからん

なんていうかそもそも仕様がハードに合っているか
っていうのから考えたほうが良さげ


76 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 08:28:03 ]
>>73
一つのメッシュは何ポリゴンぐらい?
1フレーム当たりの描画ポリゴン数を計算してみた?

77 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 09:32:33 ]
>>73
DrawSubsetというかDrawPrimitiveは非常に重い処理。
流石に1フレームに1000回はかなり無茶なレベルだぞ。

まったく同じモデルを複数表示してるならジオメトリインスタンスを使え。



78 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 10:42:52 ]
>>74
GDIとDirect3Dの共存は基本的には無理。
GDIはGDIサーフェスという固定のバックバッファに対してしか描画しないが、
Direct3DのフルスクリーンモードではFlipにより画面に表示されるバッファが
入れ替わり、GDIサーフェス以外のバックバッファが表示されたりする。
ただし、SetDialogBoxMode(TRUE)を使えば一応可能。

ウインドウモード限定なら、WS_CLIPCHILDRENスタイルを指定すれば、
コントロールが上書きされなくなるので再描画も必要ない。

79 名前:74 mailto:sage [2008/07/29(火) 11:08:32 ]
>>78
ありがとうございます!
WS_CLIPCHILDREN を知りませんでした。ためしてみます。


80 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:21:14 ]
>>79
全部DirectXで書く方が早いし楽だと思うが・・・

81 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:30:10 ]
文字描画の方法を知らないからコントロール叩いてるんだろな

82 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 10:16:23 ]
デバッグビルドにはd3dx9d.lib、リリースビルドにはd3dx9.libといったようにリンクすると思うのですが、
これはコンパネから変更できるDirectXランタイムのデバッグ/リテールとは関係ないのですか?
リリースする時にはリリースビルドに下上で、ランタイムをリテールにしてビルドしなければいけないのでしょうか?

83 名前:デフォルトの名無しさん [2008/07/30(水) 11:20:24 ]
pow2textureとnonpow2の違いってなんなんでしょうか?

84 名前:デフォルトの名無しさん [2008/07/30(水) 13:32:32 ]
質問です。
ゲームでログイン時やチャット時などのテキスト入力する箇所って
Win32APIのエディットコントロールを利用してるのでしょうか?
それともDirectX側でそのような機能が用意されてたりするのでしょうか?

SDKのサンプルを調べてみようと思っていたのですが
自分の環境だとサンプルで使う用のプラットフォームSDKの
インストールが上手く行かずコンパイルが出来ず調べ辛く、
そういったUI部分をDirectXで実装する事を詳しく紹介してる
サイト・書籍などあれば教えていただけると助かります。
(「DXUTを使え」とかじゃなしに、SDKを利用した実装方法が知りたい)

85 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 13:44:14 ]
自力でキー関係のウィンドウメッセージを処理し、(必要によっては)IMEを呼び出し、文字を描き、
あたかもエディットコントロールかのような動作を実装している

86 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 13:44:46 ]
>>77さんの言われているジオメトリインスタンスについて載っているサイト等教えていただけませんか?
探しているのですが、探し方が悪いのか見つかりません。

87 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 14:26:53 ]
msdn.microsoft.com/en-us/library/bb173349(VS.85).aspx



88 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 16:46:28 ]
質問です。
「任意軸による回転」のプログラムってどんな時に使うのが理想なのでしょうか?
実装はできましたが、いまいち面白い使い方がわかりません・・・。
ググってみましたが、調べ方が下手なのか任意軸で回転させる行列の作り方ばかりで
具体的な使用箇所等は見つかりませんでした。

89 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 17:12:42 ]
「任意軸による回転」が1つあれば、「X軸の回転」「Y軸の回転」「Z軸の回転」を3つ別々に作らなくて済む

90 名前:デフォルトの名無しさん [2008/07/30(水) 17:17:30 ]
メモリ上にあるxファイルのバイナリデータを読み込む関数ってありますか?
D3DXCreateTextureFromFileInMemoryExみたいな感じで

91 名前:デフォルトの名無しさん [2008/07/30(水) 17:21:26 ]
( ^ω^)なんというD3DXLoadMeshFromXInMemory


92 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 17:21:57 ]
ボールが転がるようなの作るのときに使ったよ
まっすぐ転がすだけならX軸回転だけでいいが、途中で横に転がるなんて場合に便利

93 名前:デフォルトの名無しさん [2008/07/30(水) 17:27:23 ]
( ^ω^)D3DXLoadMeshFromXInでググッてでてこなかったからあきらめて質問してしまった、さんくすなり


94 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 17:30:51 ]
>>64
・全アニメーションの前半部分(最初の10フレ分とか)だけをメモリにおいておき、
 それを再生中に残りを読む。
・リングバッファでデータを持っておき、1度読みこんだものはしばらく解放しない。
・使用頻度の高いもの、即時応答が必要なもののみを事前ロード
 →対戦格闘なら待機モーション+そこから派生する最初の動作のみ。
・圧縮してメモリに置いておく。使用する度に解凍する。

詳しい仕様が解ればもっとネタ出せるかも。

95 名前:88 mailto:sage [2008/07/30(水) 17:49:25 ]
回答ありがとうございます。
知らないことが多いので非常に参考になります。

>>89
マジですか、現状D3DXMatrixRotationを3回使って行列作ってますから
それだけコスト掛かってるって事になりますね。
やり方はわかりませんが、ちょっと調べてみます。

>>92
まだ任意軸の仕様がきっちりわかっていませんでしたが、
ちょっと考えればなんとなく分かりました。
つまりボールの移動しているベクトルと(0,1,0)のようなベクトルと
外積をとればXZ方向で回転させたい方向のベクトルがとれるってことですね。
なるほど、非常に参考になりました。

96 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 17:54:15 ]
えーと・・

97 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:12:11 ]
>>95
任意軸回転は3軸それぞれ回転するくらいの処理負荷は普通に食うぞ。
それにそこまでやるならもう四元数使え。めんどうくせえ。



98 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 01:03:05 ]
>>97
分かりました。
ちょうどそのあたりの本も揃えたので、やってみようと思います。
ありがとう!

99 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 06:59:29 ]
>dsound.hのコンパイルが通らないので、どうにかしたい
[環境]WinXP(sp2) VC++2005(pro) DirectXSDK(oct 2006) PlatformSDK(?最新)
[設定]ツール>オプション>VC++ディレクトリ>インクルード、ライブラリ、Bin
の設定をPlatform>DirectXの順にして設定。※DirectXSDKのライブラリはx86を指定
[ソース]
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "dsound.lib")
#pragma comment(lib, "winmm.lib")
#include <windows.h>
#include <dsound.h>
int _tmain(int argc, _TCHAR* argv[])
{
return 1;
}
[エラー]
c:\program files\microsoft directx sdk (october 2006)\include\dsound.h(230) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\program files\microsoft directx sdk (october 2006)\include\dsound.h(230) : error C2143: 構文エラー : ';' が '*' の前にありません。
以下省略
エラーの場所:typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
[備考]
mmreg.hでWAVEFORMATEXが宣言されていいて、PlatformSDKに含まれている。
PlatformSDKの設定を失敗している??
参考にしたURL:ttp://www.cppdrive.jp/vc/sdk/index1.html

上記、問題解決へのヒントなり参考サイトなり紹介していただければと思います。






100 名前:74 mailto:sage [2008/07/31(木) 07:02:13 ]
>>84 さんとは別人ですが、やりたいことは同じでした。
Win32API を使って文字入力をしているゲームはあんまりないですね。
IME とかを使っていると、変換中の文字が画面の左上にでてきたりするし。

>>85 さんの言うように全部実装するという手もありますが、
IME や右クリックしたときのコンテキストメニュー、
その他もろもろを実装するのはあんまり現実的じゃないかなと。
この辺はユーザビリティにどの程度重きを置くかで選択が変わってくると思います。

101 名前:99 mailto:sage [2008/07/31(木) 08:20:20 ]
>追記 ※半分解決※
新規プロジェクト>Win32プロジェクト>空のプロジェクト
でプロジェクトを作成するとコンパイルが通ります。

通常のWin32のテンプレート(空のプロジェクトではない場合など)
を使ったプロジェクトでは >>99 同様エラーが出ます。

102 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:33:07 ]
>>99
プロジェクトのプロパティで、
Configuration Properties→Advanced→Show Includes
を Yes にしてからコンパイルすると、
インクルードしている順番とかがわかるので、
それでなにかわかるかも。


103 名前:99 mailto:sage [2008/07/31(木) 09:02:26 ]
>>102
レスサンクスです。
早速やってみたのですが、、、順番として
dsound.hの前にmmreg.hがあるか確認したのですが、、、
そもそもmmreg.hが読み込まれていません、、、orz



104 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 10:49:49 ]
>>100
チャットの文字とかそういうのもコピペできるようにしたいの?
IMEの制御と入力中の文字のコピペぐらいで良いと思うんだけどね。
コンテキストメニューは無しで。

105 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:31:22 ]
>>103
とりあえず、これ入れてみては?
#include <mmsystem.h>

106 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:50:17 ]
ちょっとやってみたよ。
stdafx.h の中の↓の行、消すかコメントにしてみ
#define WIN32_LEAN_AND_MEAN // Windows ヘッダーから使用されていない部分を除外します。

107 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:52:20 ]
ってプリコンパイルヘッダ使ってないのか。
まあ、WIN32_LEAN_AND_MEAN のdefineがどっかにあると思うけどな。



108 名前:99 mailto:sage [2008/07/31(木) 12:38:34 ]
レスサンクスです。

>>105
>#include <mmsystem.h>
なぜか、大量のエラー(88個)が出ました、、、。
[エラー文]
構文エラー : ';' が、識別子 'MMVERSION' の前に必要です。
以下略
[エラー内容 mmystem.h]
typedef UINT MMVERSION;
以下略

>>106
#define WIN32_LEAN_AND_MEAN
を消してみましたが、
>>99 と同様のエラーが発生してダメでした。

みなさんの助言ありがとうございます。
もう少し自力で調べてみます。


109 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 12:39:26 ]
あったのか、、
消したらリビルドな

110 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 12:41:56 ]
あと空のプロジェクトだとうまくいくって書いてたが、
そのうまくいくやつのwindows.hをincludeする前に
#define WIN32_LEAN_AND_MEAN
してごらん。

111 名前:99 mailto:sage [2008/07/31(木) 12:46:19 ]
>>109

も、申し訳ありません、、、。
コンパイル通りました。
大変失礼いたしました。

#define WIN32_LEAN_AND_MEAN
についてこれより詳細に調べます。



112 名前:99 mailto:sage [2008/07/31(木) 13:26:29 ]
レスサンクスです。
>>110
うまくいかないときと同じ症状になりました、、、。
おっしゃるとおり#define WIN32_LEAN_AND_MEANが原因でした。

追記(同じ過ちを繰り返さぬよう)
#define WIN32_LEAN_AND_MEAN
をはずした後に、今まで組んでいた部分と合体したら、
winsock(winsock2.h)関係でエラーがいっぱいでましたが、
stdafx.hでwinsock2.hを読み込ませることで回避できました。
(windows.hより先にwinsock2.hを読ませないといけない)

諸兄のご尽力により、無事解決となりました。
スレ汚し大変失礼いたしました。

113 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:14:09 ]
>>100
DirectX SDKにあんたのやりたいこと全て、ソースコード付きで入ってるよ。
まぁ、そのままだと微妙に使い物にならないから、少し手直しが必要だが。

114 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:50:29 ]
>>113
Samples\C++\Direct3D\CustomUI
だね
日本語だと確定するまで違うところに表示されるのはしょうがないのかね

115 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 15:17:38 ]
>>114
そのサンプル触った上で言ってるの?

116 名前:デフォルトの名無しさん [2008/07/31(木) 16:56:43 ]
>>74
コントロールの位置が分かってるなら
マスクかければいいじゃn

117 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:23:02 ]
>>115
よく見てなかった



118 名前:64 mailto:sage [2008/07/31(木) 23:59:47 ]
>>65
200Mだと、メモリに置いてもツライ量ですね…
メモリマップドにしても、結局ディスクから読むので変わらないのかな…

>>66
全くもってその通りなのですが、どうしても2Dでやりたいのです。
MPEG1は検討してみます。ありがとうございました。

>>94
色々とありがとうございます。
リングバッファは試してみる価値があると思います。
前半だけメモリにおいておくのは、結局止まってしまうので
メモリも食うし、中途半端になってしまうかも…
圧縮もありかもしれませんね。
ディスクから読み込むのと、展開するのとどっちが重いかにもよりますが…

詳しい仕様は…そうですね、エフェクトに使うと思ってもらえればいいと思います。
1〜2秒のエフェクトが30個ほどあり、どれがいつ必要になるかわからないという状況です。
(実際には少し違いますが)
色々試したところ、どうも重くなるのは初回のみなので、あらかじめ確保→開放して
キャッシュにいれておくなんて手法もありかもしれません。
(問題は人によってキャッシュの大きさがまちまちな点ですが…)

119 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:07:24 ]
家庭用機でもメモリに置いといて解凍してVRAMに展開とかはやると思う
この場合はCPUの速度が固定なのでやりやすいとは思うんだが
それでもPCから比べればかなり貧弱でも十分に出来ると思う
もちろんPCの場合はどんなCPUつんでるかは不明だから間に合わないってケースも出てくるだろうけど
それでも大よそのケースで間に合うと思うけどな
どんな絵かはわからんが、20%ぐらいの圧縮率とかにはなるんじゃね?
エフェクトに使うってことで非可逆でも構わないならそれこそかなり圧縮できると思う






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

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

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