■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

鬱だ氏のう DirectX (Part 4)
1 名前:名前は開発中のものです。 :02/03/16 19:57 ID:0VBfShh8
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
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)

2 名前:名前は開発中のものです。 :02/03/16 20:04 ID:???
なんか重い

3 名前:名前は開発中のものです。 :02/03/16 20:28 ID:???
前スレ999の訂正
×ユーザーを
○ユーザーに

4 名前:名前は開発中のものです。 :02/03/16 21:05 ID:0wG/b+eS
おもしろさはかませないよ

5 名前:名前は開発中のものです。 :02/03/17 02:25 ID:???
>>1
スレ立てお疲れー。

6 名前:名前は開発中のものです。 :02/03/17 12:06 ID:???
DirectX8.1で、IDirectDraw3使用。
Matrox Millenium G400で、Lock後のDDSURFACEDESCのddpfPixelFormatで、
BPPやRGBビットマスクが正しい値を示さないようなんだけど、
同じ症状の人居ない?


7 名前:名前は開発中のものです。 :02/03/17 15:58 ID:???
せめてIDirectDraw4以降にしてあげなよ・・・

8 名前:名前は開発中のものです。 :02/03/18 00:37 ID:e4TWzhqJ
前スレで気になったことを少しだけ。

Direct Xのコンパネは一般ユーザー用のDirect Xをインストールしただけでは追加されません。
ゆえに、コンパネを一般ユーザーにいじくられることは無いということ。
っていうかむしろ、一般ユーザーにいじくらせてはいけない。

9 名前:6 :02/03/18 03:25 ID:???
>>7
そうしたいところだけど、デフォのWin95やNTをサポートしないといけないのよ。

10 名前:名前は開発中のものです。 :02/03/18 04:20 ID:cC7IKhF7
単純なビットマップ(BITMAPではない)
typedef struct {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
} ORG_PIX;
とか用意します。

そんで、CreateSurface()で、適当なサーフェースを作ります。ポインタをpSurとしましょう。
で、ORG_PIX* imgに展開されているイメージを、作ったサーフェースにコピーしたいんです。

こいつのピクセルフォーマットがA8R8G8B8のときなら
dc = pSur->GetDC();
StretchDIBits(dc,.....);
pSur->ReleaseDC();
でどうにかαの値も転送できたんですけど、

それ以外、例えばA4R4G4B4の時なんかはどうにもなりません。
どうするべきなんでしょう?
(転送元のPIXは、それなりに減色したりパックしたり、当然します)



11 名前:名前は開発中のものです。 :02/03/18 04:27 ID:???
>10
サーフェスをLockしてがりがりやるだけなのでは?
転送ルーチンを想定フォーマット分作る。
サーフェスをビデオメモリに取るとLockした時激遅になるから、
システムメモリに取った方が良いよ。

12 名前:10 :02/03/18 04:59 ID:dk9uRKOS
>>11
ありがと。いろいろ見てみたんだけど、

DDSURFACEDESC2 desc;
void* img = desc.lpSurface;

pSur->GetSurfaceDesc( &desc );
pSur->Lock();
..... imgを処理 ......
pSur->Unlock();

って感じになるのかな?
テクスチャに使用するつもりなんで、ビデオメモリに取って、
最初の初期化だけで使用するなら問題ないよね??

で、あとここで直接のimgなんだけど、
A1R5G5B5 : WORD*、
R8G8B8 : DWORD*
A8R8G8B8 : DWORD*
となるんでしょうか?このあたりの資料が見当たらない・・・
あと、システムメモリだったら
*img = 0x00;
とか直接書き換えてよさそうなんだけど、ビデオメモリでも
そんなことが許されるんでしょうか?


13 名前:10 :02/03/18 05:00 ID:dk9uRKOS
DDSURFACEDESC2 desc;
pSur->GetSurfaceDesc( &desc );

void* img = desc.lpSurface;
pSur->Lock();
..... imgを処理 ......
pSur->Unlock();

こうでした・・鬱

14 名前:10 :02/03/18 05:06 ID:dk9uRKOS
ああ!!わかった!!
「クライアント メモリ サーフェスの作成」
ってヤツだ!!!見つけた!!!
なんだ、CreateSurface()で、
DDSURFACEDESC2 ddsd2;
ddsd2.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_LPSURFACE |
DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_CAPS;
ddsd2.lPitch = (LONG)1テクセルのバイト数 * 横ドット数;
ddsd2.lpSurface = lpSurface;

ってやって、ピクセル情報とバッファを指定できるんだね。
ありがとう!






15 名前:名前は開発中のものです。 :02/03/18 17:41 ID:???
>>9
デフォのWin95はDirectXはいってないでしょ?

16 名前:6 :02/03/18 17:56 ID:???
>>15
いや確かにそうなんだけど、NTはどのバージョンまでサポートだったかな。
というかそういう事について議論したいんじゃなくて、G400の挙動について
知りたいんだけど…。
プライマリのddpfPixelFormatが嘘を返すみたいだ。プライマリ以外は全て
システムメモリに取ってるからかな。

17 名前:名前は開発中のものです。 :02/03/18 18:51 ID:???
ドライバは最新だよね?
G400は・・・かなり手ごわいと聞くぞ。

18 名前:6 :02/03/18 20:53 ID:???
>>17
クライアント(ユーザね)は最新だと言ってるみたい。
Matrox製はいつになっても手強いな。

19 名前:6 :02/03/19 02:29 ID:???
原因判明。PrimaryのLockが出来ないために、DDSURFACEDESC自体が
取得できていなかった模様。何故Lock出来ないかは不明。
バグなのか仕様なのか。
while((hr=pSurface->Lock(NULL, &dddesc, 0, NULL))==DDERR_WASSTILLDRAWING);
Lockしてるところはこんな感じ。代わりにセカンダリを見るようにして対処。

20 名前:名前は開発中のものです。 :02/03/19 04:24 ID:31ewjsnk
プログラマ板でも書いたのですがレスがつかなかったのでこちらで・・・。

Zバッファをbltで別のZバッファに
保存しているのですが、Zバッファのbltをサポート
しているかどうかを調べることは出来るのでしょうか。

それとも調べるまでも無く、
基本的に備わっている機能なのでしょうか。

使用しているのはDirectX 7です。


21 名前:  :02/03/19 05:00 ID:???
そんな事できる環境あるんだ

Geforce(DX8&HAL)じゃZbufferのLockすら出来ないよ

GetSurfaceDescで調べられるんじゃない?

22 名前:名前は開発中のものです。 :02/03/19 07:28 ID:???
>Geforce(DX8&HAL)じゃZbufferのLockすら出来ないよ

うげ。ヤなこと聞いちゃったなー。
レンズフレアのサイズ決めるのどうしよう。


23 名前:6 :02/03/19 10:49 ID:???
一部のビデオカードだと逆にLockしないと、
GetSurfaceDesc出来なさそうで怖いなぁ。
うちはRIVATNT2なんだけど、プライマリをLockできる。
最近のビデオカードだと駄目なのかもしれないなぁ。

24 名前:名前は開発中のものです。 :02/03/19 11:40 ID:???
このスレのタイトルどおりだ…

25 名前:20 :02/03/19 13:08 ID:tA4eHCtW
念のために、という程度の軽い気持ちで聞いたのに・・・
まさか出来るほうが稀だとは。

ビデオ表示関係作り直しです。

 (゚∀゚ )   アヒャ!

>>21さんありがとうございました。

26 名前:20 :02/03/19 13:26 ID:9k2LxFbF
あぁ・・・でも>>21さんはDX8でって言ってますね。
たしかサーフェス関係の操作はDX8で大分制限されてると聞きました。

うちはGeForce2 MX+DirectX 7なんですが、ZバッファのbltもLockも出来ました。
DirectX 7でも出来なかったという方はいますでしょうか。

作り直すのはもうちょっと調べてからにします。
でないと本当に

 (゚∀゚ )   アヒャ!

ってなるので。

27 名前:名前は開発中のものです。 :02/03/19 13:42 ID:7hnDVQXs
ラデオンとかGF4とかって
チップ内部にZバッファのMIPMAPみたいなの持ってるって言うじゃん。
そういうのが影響しとるのかの?

28 名前:20 :02/03/20 00:34 ID:J9JVDwtj
DirectX 8使ってみました。

ZバッファのLockは>>21さんの言っていたように出来なくなってました。
フォーマットにD3DFMT_D16_LOCKABLEを指定してみましたが、
そのときはデバイスの作成すら出来なかったです。

ただ、SetRenderTargetでZバッファの交換は出来ました。
これなら、私のようにZバッファの書き換えではなく、
Zバッファを差し替えることが目的であれば使えそうです。


29 名前:  :02/03/20 00:44 ID:???
差し替えるにしても、書き込めないと使えなくない?

FFみたいな背景のプリレンダーした結果のZバッファを書き込む
とかできないんかねぇ?

30 名前:名前は開発中のものです。 :02/03/20 01:10 ID:TL0LxE1T
プログラム板では誰も答えてくれない、鬱・・・
親切な人教えてください。

これからDirectXを学習してみようと思ってるとこです。
で、現在CでWinアプリがぼちぼち書ける状態なのですが、
DirectXに行く前にC++覚えたほうがいいですか?

DirectXのサンプル見ると、classやnewやdeleteを使っているので
C++覚えないで行くとハマる?


31 名前:  :02/03/20 01:15 ID:???
ちゃんとCがわかってるなら問題にならないよ
まぁNew、Delete位は知らないと駄目だし、
MSのサンプル読むなら 継承(ポリモーフィズム) も知らないと駄目かな

工学社のDX入門本とか読めば問題ないと思われ


32 名前:名前は開発中のものです。 :02/03/20 01:23 ID:3xx3+7Z6
>>30
自分の場合いきなりC++から覚えましたよ。
VC++に付いてた参考書がC++だったので・・。
おかげで挫折して1年間ぐらい無駄にしましたけどね。
既にCをマスターしているのならC++を覚えるのはそう難しくないので
DXの前に軽くこのなしてしまって良いと思います。
ただC++は膨大なのであんまり深入りしないで、classの文法程度を覚えたら
DirectXと同時進行で覚えていくのが良いと思います。

33 名前:20 :02/03/20 01:26 ID:J9JVDwtj
>>29
私の場合はDirect3Dでレンダリングした時のZバッファを
保存しているだけなので書き込みは必要ないんです。

と、思ったんですが、これ使えるのは1回だけですね。
差し替えた後にレンダリングしたら当然Z値が変わってしまう・・・。
何回も使う必要があるのに・・・。

やっぱりDirectX 7でZバッファをbltしていいのかどうか知りたいです。
誰か出来ないビデオカード持ってる人いませんか〜 (;´Д`)

34 名前:30 :02/03/20 01:35 ID:TL0LxE1T
>>31-32
レスどうもです。
C++の基本的なところを理解してからDirectX行ってみようと思います。

それにしてもDirectX8のヘルプ、3D初心者の為の解説とかあって
すっごく親切ですね。

35 名前:名前は開発中のものです。 :02/03/20 01:43 ID:???
>>33
ヘルプ見た?

>現時点では、Z バッファは Direct3D アプリケーションでしか使用されないが、
>DirectDrawSurface7::Blt を使用して DDBLT_DEPTHFILL フラグを設定することにより、
>Z バッファ サーフェスの深度値を設定できる。
>詳細については、Direct3D 直接モードの「深度バッファのクリア」を参照すること。

>DirectDraw を使用して深度バッファをクリアすることもできる。
>これをクリアするには、深度バッファ サーフェスの IDirectDrawSurface7::Blt メソッドを呼び出す。
>DDBLT_DEPTHFILL フラグは、ブリットによって深度バッファをクリアすることを示す。
>このフラグを指定するときは、IDirectDrawSurface7::Blt メソッドに渡す
> DDBLTFX 構造体を初期化し、その dwFillDepth メンバを必要な深度に設定しなければならない。

と書いてある。

書いてあるからといって実際に使用できるかどうか不明だが、
すくなくとも基本的には使えると思っていいんじゃないの。




36 名前:20 :02/03/20 02:12 ID:???
>>35
はい、私も基本的に使えるものだと思いつつ、
念のために聞いてみたのですが、
>>21さんのレスでちょっと不安になりまして・・・。

一応、保険ということで
Zバッファを保存できなかった場合の対処コードは書くつもりです。
パフォーマンスが落ちると思うので、この保険を使わずに済めばいいのですが。

37 名前:顔も名前も出さずに毎月100万円 :02/03/20 02:28 ID:X28IDIqU
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入    

●10,000円単位の高収入
 1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
 インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
 インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
 ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
 ートも万全です。
●詳細は今すぐHPをご覧ください。
  http://www.future-web.tv/7823/


38 名前:名前は開発中のものです。 :02/03/20 16:29 ID:7vhr8N1/
D3DX のヘルプファイルってないのでしょうか?
英語でもいいんですけど .chm っていうのかな、いつものヤツ。
使ってる人はどうやってるんだろう?ヘッダだけ?

39 名前:  :02/03/20 16:54 ID:???
日本語版あるじゃん

40 名前:名前は開発中のものです。 :02/03/21 03:20 ID:5/uSd78r
そういえばchmヘルプって検索使ったら
ネットにつなごうとするんだけど・・・。
なんかいやだなぁ。

41 名前:名前は開発中のものです。 :02/03/21 04:27 ID:4EcPxfN/
シツモンです。
マウスのカーソルがウィンドウに乗った途端に遅くなるのはなぜですか?
遅くなるプログラムとならないプログラムを見比べても違いは見つからないんです。


42 名前:38 :02/03/21 06:44 ID:UEeaAHcN
>>39
どこにあるのでしょう?探したけれど見つかりません。
MS のサイトを見てもそれらしいものは見つからないし…

43 名前:名前は開発中のものです。 :02/03/21 08:02 ID:???
>42
探したなら見つかるはず。どこ探してるの?

44 名前:名前は開発中のものです。 :02/03/21 11:51 ID:???
>>41
WM_PAINTで全面描画してるからです。

45 名前:名前は開発中のものです。 :02/03/21 13:32 ID:Z3SYmda6
>>41
私のプログラムでも、VooDoo3000、G400でカーソルが遅れて動く現象
が発生します。フルスクリーン時には発生しません。
レンダリング後にSleepやGetDC・ReleaseDCなどを入れると
軽減することがありますが、グラフィックカードによって挙動は様々です。
それにSleepなんて無駄なので、おすすめしません。
おそらくウインドウメッセージ関連だとは思うのですが、はっきりした
ことは私にもわかりません。


46 名前:名前は開発中のものです。 :02/03/21 16:22 ID:0p7f/wDg
日本語の文字表示を、市販のゲーム(エロゲー)みたいに 丸っこい
滑らかなフォントで表示するにはどうすればいいのでしょうか?
 別個で、フォントデータが必要なのでしょうか?

47 名前:名前は開発中のものです。 :02/03/21 17:23 ID:gYyzC957
>>46
太字にしてアンチエイリアスかけるとか。

48 名前:名前は開発中のものです。 :02/03/21 20:00 ID:???
>>46
丸っこいフォントを用意しなさい。

49 名前:名前は開発中のものです。 :02/03/21 22:49 ID:Z3SYmda6
>>46
X フォントファイル自体の配布(ソフトに組み込む)
○ ゲームや広告で使用する
だと思うのですが、フォントをビットマップに書き込んで
転送して使えばOKなんじゃないででしょうか。
一般に売っているフォントでの話ですが。


50 名前:名前は開発中のものです。 :02/03/21 23:25 ID:UEDPziA9
>>44
thx

51 名前:名前は開発中のものです。 :02/03/21 23:33 ID:???
うちの環境なんてマウスカーソルをウインドウ内に*置かないと*遅くなる。
どうもウインドウにハードウェアで拡大してBltするときに起こるらしい。
OSが違うと起こらない。ドライバの不都合の模様。もうアホかと。

52 名前:  :02/03/21 23:39 ID:???
環境かけよ

53 名前:名前は開発中のものです。 :02/03/22 00:13 ID:???
例えば、51みてーに既知外がコピぺするわな。
そうすると、OSが違うとなにが反応するか分からないのよ。
もうアゴかと。置かないと、遅くなるどころか早く振動するのよ。
もう終わってり(以下尺)


54 名前:38 :02/03/22 00:35 ID:???
>>43
ローカルディスクの中を .chm で検索しました。
通常の機能についてのヘルプはありましたが D3DX については書いてありません。
MS のサイトを調べてみましたがダウンロードできるのはローカルディスク内に
あるのと同じ物でした。

D3DX のヘルプはどこにあるのでしょう?探し方がおかしいのだとは
思いますが、本当にわかりません。よろしくお願いします。

55 名前:名前は開発中のものです。 :02/03/22 00:39 ID:???
http://www.microsoft.com/downloads/release.asp?releaseid=26072

ご苦労様。確かにMSサイトはどこにあるかわかりにくい


56 名前:名前は開発中のものです。 :02/03/22 00:40 ID:bpcg30Y5
>>54
DirectX 8.0のヘルプの中にあったよ。

57 名前:名前は開発中のものです。 :02/03/22 00:53 ID:???
SDKのヘルプを開いて「キーワード」ペインでD3DXと打ってみる、と。


58 名前:38 :02/03/22 01:10 ID:???
>>55
ありがとうございます!!
無事ヘルプを得る事ができました!!

59 名前:名前は開発中のものです。 :02/03/22 01:14 ID:???
というか、英語ヘルプにもD3DXのAPIリファレンス含まれてますけど……。
未だに38の状況が良く分からない拙者であった。


60 名前:名前は開発中のものです。 :02/03/22 01:21 ID:???
       ∧_∧
      ( ´Д`) 
     /    \
  __| |  60 | |__
  \   ̄ ̄ ̄ ̄ ̄   \
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

61 名前:名前は開発中のものです。 :02/03/22 02:36 ID:sbFQt95u
最近 DirectGraphics8 をはじめたばかりなのでよくわからないのですが、
同じ頂点データをシーンの様々な場所に使いまわすには
それぞれの物体を描く前に、SetTransform(D3DTS_WORLD, 位置とかを設定した行列)
をするという事でしょうか?
一般的なやりかたというのはこういう感じでいいのでしょうか?

62 名前:  :02/03/22 02:40 ID:???
OKです。それで対応できない状況は別の方法でやります

63 名前:61 :02/03/22 02:43 ID:sbFQt95u
>>62
ありがとうございます。これでオッケイなのですね。
後学の為に聞いておきたいのですが、この方法で対応できない状況というのは
どんな場合なのでしょう?


64 名前:名前は開発中のものです。 :02/03/23 00:18 ID:U1CJ6Ne+
D3DXMatrixLookAtLH の pUp って pEye からの相対位置じゃなくて
(0,0,0) からの位置ですか?

65 名前:名前は開発中のものです。 :02/03/23 01:06 ID:B+RYlbts
>>64
ワールド座標系での、視点の上方を表すベクトルですね。多分。
(0,0,0) からの位置。

66 名前:64 :02/03/23 02:43 ID:U1CJ6Ne+
>>65
どもです。pEye からの相対値だと勘違いして随分ハマリました。

67 名前:名前は開発中のものです。 :02/03/23 19:34 ID:6+0k3M1g
Bio100%でも書いたのですがレスがつかなかったため
2重投稿になってしまい申し訳無いのですがよろしくお願いします。

VBで作成していてDirectPlayVoiceTestのレジストリを参照する作業は、
DirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY)
であると思ったのですが、テスト(全2重と確認)後に値を取得したときに『2』であり、DVERR_RUN_SETUPもDV_FULLDUPLEXもDV_HALFDUPLEXも値が違いました。
何処かに間違えがあるのでしょうが、全く判りません。

解決方法を教えて頂きたいです。お願いします。

68 名前:名前は開発中のものです。 :02/03/23 20:20 ID:bIOVjYAR
HRESULTでいうと0x2はERROR_FILE_NOT_FOUNDになるんだけど。
DVFLAGS_ALLOWBACKは成功すんの?

69 名前:名前は開発中のものです。 :02/03/23 20:58 ID:6+0k3M1g
戻るボタンを押すとオートメーションエラーとなってしまいました。
(DirectPlayVoiceTest8.CheckAudioSetup("", "", Me.hwnd, DVFLAGS_ALLOWBACK))
その後、デバックを押し、その一時停止状態からもう一度開始すると↑をもう一度やりました。

70 名前:67.69 :02/03/24 13:42 ID:5HzI58ib
DVERR_RUN_SETUPの値はDirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY)の
エラーの値で一致したのですが、全2重等を確認した後はエラーは出ず、
値を取得する事は出来ませんでした。

71 名前:67.69.70 :02/03/24 13:45 ID:5HzI58ib
ただ、エラーコードの中にDV_FULLDUPLEXもDV_HALFDUPLEXもあるため、
Err.Numberから値を取るような気はしてるのですが、上手くいきませんです。

72 名前:名前は開発中のものです。 :02/03/24 20:33 ID:5HzI58ib
『エラーは負の値で表され、組み合わせて使用されることはない。』のはずなのに、
DV_FULLDUPLEX = 1376261
DV_HALFDUPLEX = 1376266
となるのと、テスト後のDirectPlayVoiceTest8.CheckAudioSetup("", "", 0, DVFLAGS_QUERYONLY)の値は
『0』だったり『2』だったりします。


73 名前:名前は開発中のものです。 :02/03/25 19:52 ID:???
マルチ投稿する奴には答えないという暗黙のルールが。

74 名前:名前は開発中のものです。 :02/03/26 22:30 ID:???
VB使ってる奴が少ないと言う罠。

75 名前:名前は開発中のものです。 :02/03/27 00:54 ID:???
VC++.net でDirectXはどんな感じになったの?
誰か試した人いる?

76 名前:名前は開発中のものです。 :02/03/27 00:59 ID:???
DirectXはDirectXだろーが
あほかお前

77 名前:名前は開発中のものです。 :02/03/27 02:08 ID:???
          /⌒彡:::
        /冫、 )::: ・・・・その自作自演に何の意味があるのだ・・・
       __| `  /:::
      / 丶'  ヽ:::
     / ヽ    / /:::
    / /へ ヘ/ /:::
    / \ ヾミ  /|:::
   (__/| \___ノ/:::
      /    /:::

78 名前:名前は開発中のものです。 :02/03/27 03:23 ID:???
>>75
VC++.netnに入ってるのはdx8.0だね。


79 名前:名前は開発中のものです。 :02/03/27 06:39 ID:???
x ファイルの構造について、詳しく解説してるサイトはないでしょうか?
特にアニメーションがさっぱりです

80 名前:名前は開発中のものです。 :02/03/27 22:32 ID:???
>>79
俺もきぼんぬ。
ただ今の野望はアニメキャラを3Dで動かすこと。

81 名前:名前は開発中のものです。 :02/03/27 22:46 ID:???
>>79-80
SDKのヘルプ以上に詳しくわかりやすい情報は無いと思いますが。


82 名前:79 :02/03/28 01:46 ID:???
ここのソース参考にして頑張ってみます
ttp://home7.highway.ne.jp/nomura_y/program.htm
なんかわかったら教えてください。


83 名前:80 :02/03/28 02:34 ID:???
>>82
サンクス。俺も勉強します。
サンプルのSkinnedMeshがワケワカメなのが俺だけじゃなくて安心した。

84 名前:79 :02/03/28 04:33 ID:???
結構わかってきたかも、これから自分のコードに落としこみます。
80さん、わかんないことあったら聞いてください。できたら答えますんで

85 名前:名前は開発中のものです。 :02/03/28 12:10 ID:???
          /⌒彡:::
        /冫、 ):::  ・・・その(以下略
       __| `  /:::
      / 丶'  ヽ:::
     / ヽ    / /:::
    / /へ ヘ/ /:::
    / \ ヾミ  /|:::
   (__/| \___ノ/:::
      /    /:::

86 名前:80 :02/03/28 19:43 ID:???
>>85
全然自作自演じゃないんだが。

こんな普通のやり取りも自作自演に見えるほど
この板の住人は少ないのか?

87 名前:名前は開発中のものです。 :02/03/28 23:10 ID:heIiu0GQ
>>86
85が自作自演なんだよ(藁

88 名前:名前は開発中のものです。 :02/03/29 02:06 ID:???
皆さんは8.1SDKに付いてるDirectX AppWizard使ってますか?

89 名前:名前は開発中のものです。 :02/03/29 04:28 ID:AV6+tb2a
シツモーン

皆様Xファイル読み込んでアニメーションさせたい言ってますが、
その元のXファイルはどうやって作るんでしょうか?
お安いところでメタセコイヤなど有りますが、アニメーションは?

なんかフリーでいいものあるんでしょうか?


90 名前:名前は開発中のものです。 :02/03/29 08:36 ID:???
max安いよ

91 名前:名前は開発中のものです。 :02/03/29 10:14 ID:???
たかいって・・・

92 名前:名前は開発中のものです。 :02/03/29 12:05 ID:Jx1kEynD
SHADEはXファイル吐かないんだっけ?
当方はライトウェーブのプラグインを使ってる。

93 名前:名前は開発中のものです。 :02/03/30 19:08 ID:NfT6Ft0o
DirectX8のDirectSoundはDSBCAPS_CTRLFXを持つバッファに
DuplicateSoundBufferを使えませんが、
銃弾や爆発音などは中身の同じ複数のサウンドバッファを
作ってやるものなんですか? 無茶苦茶むだっぽいんですが・・・
それともIKsPropertySetでEAX使うんでしょうか?


94 名前:名前は開発中のものです。 :02/04/01 03:05 ID:0JhLjDkQ
ぶっちゃけメッシュという単語の意味がわかりません。
検索かけてもばらばらな意味合いで、どれがそうなのか判別つかず。。。

だれか教えて。

95 名前:名前は開発中のものです。 :02/04/01 03:17 ID:BvPbMnQF
ポリゴンが集まってりゃメッシュです。
いやいや、1枚でもメッシュかも?
そんなもんです。

深く考えるのはよしまショー

96 名前:名前は開発中のものです。 :02/04/01 03:28 ID:0JhLjDkQ
Σ('ロ')なんと

なんか「メタセコではDX8のメッシュ情報は云々・・・・」とかいうのが
どこかにあったんで、DX8から取り入れられた何かしらの技術だと
思ってたんですが・・・そうなのね。

thx!

97 名前:名前は開発中のものです。 :02/04/02 20:16 ID:evm2qedr
みんなどうやってキー入力取ってる?
WndProcでやると簡単だけどカクカク。
DirectInput使ってる?

98 名前:名前は開発中のものです。 :02/04/02 20:22 ID:Ks0FRQrf
>>97
当然DirectInput。初期化部分はサンプルからコピペすれば簡単だよ。
WndProcはALT+TABとかALT+F4のようなシステムコマンドに使うもの。


99 名前:名前は開発中のものです。 :02/04/02 20:40 ID:evm2qedr
>>98
ほほう。
サンプルってこれ?
ソース ファイル :(SDK ルート)\Samples\Multimedia\DirectInput\Joystick
ちょっとこれ見てみるよ。

100 名前:名前は開発中のものです。 :02/04/02 21:55 ID:???
      ∧∧
 丿′ ̄;'',,';Д。) <アア〜100だ〜げっとだ〜
  UU ̄U U


101 名前:名前は開発中のものです。 :02/04/03 04:28 ID:???
>>97
そこらへんのライブラリからコピペしてくると良いよ。

102 名前:名前は開発中のものです。 :02/04/03 09:07 ID:???
フルスクリーンでVSync待たずにビルトしたいのですが
D3DSWAPEFFECT_COPYだと思ったら違った
質問しようと思ってメンバ調べたら下にD3DPRESENT_INTERVAL_IMMEDIATEがあった
鬱だ詩嚢

103 名前:名前は開発中のものです。 :02/04/03 11:15 ID:???
>>97
DirectInput使うのがめんどくさいときとかテスト用のプログラム作ってるときは
GetAsyncKeyStateとかGetKeyboardState使うと楽だよ

104 名前:97 :02/04/03 18:35 ID:pyeIqBtk
MSのサンプルに見きりをつけてライブラリから探してみるよ〜。
ホタテのコードでも見てみるか。

105 名前:名前は開発中のものです。 :02/04/03 18:49 ID:???
>>104
どこがわからんの?
チュートリアル通りにやれば誰でも出来ると思うんだが?

106 名前:97 :02/04/03 19:58 ID:???
できたよ〜。

107 名前:名前は開発中のものです。 :02/04/03 20:13 ID:5L/0y8l8
DirectX8で2Dシューティングゲーム作ってるんだが
背景マップをオフスクリーンサーフェースに描いていきたいんだが、
オフスクリーンサーフェースってどうやって用意するんですか?

108 名前:名前は開発中のものです。 :02/04/03 20:38 ID:???
んだが

109 名前:名前は開発中のものです。 :02/04/03 20:51 ID:???
DirectX9まだ?(゚ε゚)

110 名前:名前は開発中のものです。 :02/04/03 21:02 ID:esV7cwkm
>>107

DirectX8では、オフスクリーンサーフェス自体がなくなったから
DIBSectionにでも描いてBltするんじゃなかったっけ?


111 名前:105 :02/04/03 21:12 ID:???
>>107
DirectX8の場合、サーフェスに描いてCopyRectか自分で転送、テクスチャで描くかしか
方法が無かったように思う。

2DならDirectX7でD3DX使った方がかなり楽。


112 名前:名前は開発中のものです。 :02/04/03 21:37 ID:???
>>110,111
ありがとうございます。オフスクリーンサーフェース自体なくなったのか?
知らなかったよ。
事情があってDirectX8でやらなくちゃいけないんです。
どなたか、もし他に方法知ってたら教えてください。

113 名前:105 :02/04/03 21:56 ID:???
>>112
>サーフェスに描いてCopyRectか自分で転送
方法書いたが?これじゃ駄目なのか?

事情はしらんけど、とりあえずはヘルプを熟読することを推奨。

114 名前:名前は開発中のものです。 :02/04/03 23:12 ID:JWGNVBMk
Direct X7でDirect Music使っています。
ポートの列挙でMidi Mapperを探し出したいんですけど、
なんだか環境によって「Midi マッパー」とか「MIDI Mapper」とか
名前が変わりすぎです。(泣
名前以外で判定する方法ってありますでしょうか?
一通りヘルプを読んだんですけど、Midi Mapperについては何もかかれてなくて・・・

115 名前:名前は開発中のものです。 :02/04/03 23:28 ID:???
orで検索すればいいだけじゃん?

116 名前:名前は開発中のものです。 :02/04/03 23:32 ID:JWGNVBMk
全環境のMIDIマッパーリストってあるんですか?
もしあるのなら教えていただきたいです。
一体、何通りあるのでしょう・・・。
英語日本語中国語韓国語。
さらにOSのバージョンによっても微妙に違うし。
ああ、鬱だ。

117 名前:114 :02/04/03 23:37 ID:JWGNVBMk
あきらめてデフォルトの
Microsoft Synthesizerを使うべきなのでしょうか(泣

118 名前:97 :02/04/04 02:08 ID:3oFlzdXM
DirectInput使ってのその後の話、
なんか人のワークスペースをそのまま使うとエラーが起きないのに、
自分のワークスペースでやると
c:\dxsdk\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800

pad.obj : error LNK2001: unresolved external symbol _GUID_SysKeyboard
pad.obj : error LNK2001: unresolved external symbol _IID_IDirectInput8A
dinput8.lib(dilib4.obj) : error LNK2001: unresolved external symbol _GUID_POV
dinput8.lib(dilib4.obj) : error LNK2001: unresolved external symbol _GUID_Slider
等のエラーがでる。
自分で用意した新しいワークスペースに人のコードをまったく手を加えずに追加してコンパイルしても上のエラーがでる。
ちゃんとdinput8.libも設定で追加したし・・・。なぜ?

119 名前:名前は開発中のものです。 :02/04/04 02:24 ID:g7m5dzie
うちは市販ソフトだけど、もうMIDIなんて使う気
さらさらありません。


120 名前:名前は開発中のものです。 :02/04/04 02:37 ID:???
>>119
何使ってます?
CD-DA? or MP3系?
まあ MIDI は音が音源によって変わりますからなぁ。

121 名前:名前は開発中のものです。 :02/04/04 02:39 ID:???
>>118
dxguid.lib

122 名前:97 :02/04/04 02:45 ID:???
>>121
おー、なるほど、つーかバカかおれわ。
さんきゅー。

123 名前:名前は開発中のものです。 :02/04/04 06:56 ID:???
>119
フリーソフトだけど禿同。
回線速度上がったし、もせでも十分いける。

124 名前:名前は開発中のものです。 :02/04/04 14:08 ID:VskWoZt9
鬱age

125 名前:名前は開発中のものです。 :02/04/04 14:48 ID:VWxy3QQo
>>113さん
ありがとうございます。
おかげさまでオフスクリーンサーフェイスを使うことができましたが、
転送がかなり遅いです。
//オフスクリーンからバックバッファにコピー
LPDIRECT3DSURFACE8 pBackBuffer=NULL;
g_pD3DDevice->GetBackBuffer( 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);
RECT rect={0,0,640,480};
g_pD3DDevice->CopyRects(g_pOffSurface,&rect, 1, pBackBuffer,NULL);
てな感じでやっているんですが、何か注意点があれば教えてやってください。

126 名前:名前は開発中のものです。 :02/04/04 21:22 ID:???
CopyRectsってLockして転送してるだけだよ。
DirectX8だと2D描画でもDrawPrimitive使わないと遅いよ。

127 名前:名前は開発中のものです。 :02/04/04 22:45 ID:???
>>125
速度の話なら環境を書かないとなんとも言えない。

128 名前:名前は開発中のものです。 :02/04/04 22:58 ID:AXMg/Cri
Direct3Dの座標変換がうまくいきません。助けて・・・
DirectX8.1です。

単に三角を表示するだけなんですが、D3DFVF_XYZRHW で座標変換しない場合は
表示できたのですが、D3DFVF_XYZを使うと表示してくれないんです。

(頂点の定義部分)
------------------------------------------------------------------
struct CUSTOMVERTEX{
  FLOAT x, y, z;
  DWORD color;
};
CUSTOMVERTEX g_vertecs[] = {
  { 0, 50, 0, 0xffff0000},
  { 50, -50, 0, 0xff00ff00},
  {-50, -50, 0, 0xff0000ff},
};
#define D3DFVF_CUSTOMVERTEX  (D3DFVF_XYZ|D3DFVF_DIFFUSE)
------------------------------------------------------------------

(トランスフォーム部分)
------------------------------------------------------------------
D3DXMATRIX matWorld;
D3DXMATRIX matView;

BOOL InitDevice()
{
  // ワールドトランスフォーム(今のところ使ってない)
/*
  D3DXMatrixIdentity(&matWorld);
  if(FAILED(CD3D.lpD3DDevice->SetTransform(D3DTS_WORLD, &matWorld))){
    CD3D.DispErrMsg("Failed CDirect3D::InitDevice SetTransform(D3DTS_WORLD)");
    return FALSE;
  }
*/
  // ビュートランスフォーム
  D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0, 0, -200), &D3DXVECTOR3(0, 0, 0), &D3DXVECTOR3(0, 1, 0));
  if(FAILED(CD3D.lpD3DDevice->SetTransform(D3DTS_VIEW, &matView))){
    CD3D.DispErrMsg("Failed CDirect3D::InitDevice SetTransform(D3DTS_VIEW)");
    return FALSE;
  }
  return TRUE;
}
------------------------------------------------------------------


129 名前:128の続き :02/04/04 22:58 ID:AXMg/Cri
(描画部分)
------------------------------------------------------------------
BOOL AppMain()
{
  // 画面描画
  CD3D.BeginRender();

  CD3D.lpD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX);
  CD3D.lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, g_vertecs, sizeof(CUSTOMVERTEX));

  CD3D.EndRender();

  return TRUE;
}
------------------------------------------------------------------

こんな感じですが、実行しても3角形がまったく表示されません。
何が悪いんでしょうか?

130 名前:名前は開発中のものです。 :02/04/04 23:26 ID:???
頭が悪いのではないでしょうか?

131 名前:名前は開発中のものです。 :02/04/04 23:35 ID:WlT6GFeI
>>129
DrawPrimitiveUPがおかしいヨ。
エラーが帰ってきてるはず、
きちんとエラーコード取得して、
ヘルプを参照なさい。


132 名前:名前は開発中のものです。 :02/04/04 23:52 ID:???
>>125
本来の使い方をしていないのだから、速度は求められないんじゃないかなあ。
DirectX8だけどDirectDraw7を使うとか、DIB使って最後だけDirectX使うとか。

事情というのがどの程度の事情で、どんなものを作っているのかわからないから
これ以上はアドバイスのしようが無いと言うのが本音。

133 名前:128 :02/04/05 00:29 ID:qZbbZCHa
>>131
調べてみましたが、DrawPrimitiveUPは0が返ってきてます。

134 名前:名前は開発中のものです。 :02/04/05 00:29 ID:???
DirectX8 SDKじゃDirectX7を使えないと思ってるのかも。

135 名前:名前は開発中のものです。 :02/04/05 00:33 ID:7BV1qZd5
09049541756 おじいさんの謎メッセージが聞ける

136 名前:119 :02/04/05 00:56 ID:???
OggVorbis先物買い

137 名前:名前は開発中のものです。 :02/04/05 07:09 ID:???
>>128
行列を1つ忘れてないか?

138 名前:128 :02/04/05 23:43 ID:qZbbZCHa
>>137
プロジェクション行列追加したら表示できました。ありがと。
ワールド行列は省略可だけど、ビューとプロジェクションは省略不可なのね。

139 名前:名前は開発中のものです。 :02/04/05 23:52 ID:T9OfWPyd
フライトシミュレータとかでオイラー法で積分するとして、
メッセージループから呼び出して計算した場合にFPSが落ちてくると冲が大きくなって
計算精度が落ちると思うんだけど解決法法はあるんですか?
常に同じくらいの冲を取ってプレイヤーの入力後に計算するためには一体どうすればいいんですか?

140 名前:名前は開発中のものです。 :02/04/06 00:30 ID:???
>>139
スレッド使って計算しる
または、毎フレーム最低10回計算するようにしる

ってのはどう?
dtは0に近ければ近いほど良いはずでしたよね?たしか。



141 名前:名前は開発中のものです。 :02/04/06 02:34 ID:???
冲の最大値固定>スローになる
or
描画間引き
or
姿勢行列なら予言数


142 名前:79 :02/04/06 03:12 ID:???
やっとできた...しかも82のサイトの劣化コピーにしかならなかったよ...鬱

143 名前:139 :02/04/06 13:35 ID:2sBUZSQs
>>140-141
ありがとう。
ちょっとこれから試してみます。
まとまったらまた書きます。

144 名前:  :02/04/06 15:30 ID:gGSxUTnj
スレッド使って計算すると、変数が表示用と計算用とダブルバッファに必要になるよね〜
単純な変数構成ならいいけど、親子関係とかあるとグチャグチャになりそう
更にリプレイ用に一部、保存したりすると嫌かも…
いい書き方はないもんか

俺は描画前に凾狽ェ大きければ再度、計算ループを回す方法にした。楽だし


145 名前:  :02/04/06 16:02 ID:gGSxUTnj
あ、ダブルじゃなくトリプルか?

146 名前:名前は開発中のものです。 :02/04/06 16:17 ID:XrlyzQXc
【コピペ1周年】4月7日同時多発オーダーIN吉野家【祭り】
(1)馴れ合い禁止。(一人で来る事。同伴禁止:いても知らぬ顔)
(2)「大盛りねぎだくギョク」を頼むこと。(並盛りねぎだくギョクも可)
(3)各会場ごとに指定時間厳守で現地集合。
(4)食ったら即帰る。
注)吉野家は家に帰るまでが吉野家です。

本スレ
http://ex.2ch.net/test/read.cgi/entrance/1017935504/l50
スレよりぬき等
http://www2.mnx.jp/carvancle/yoshigyu/
お祭り板
http://live.2ch.net/test/read.cgi/festival/1014549688/l50


147 名前:名前は開発中のものです。 :02/04/06 18:09 ID:0Pv1iBiS
DirectX8.1のDirectXAppWizardでDirect3Dベースで作成したプログラムに
DirectShowのビデオ・レンダリング・グラフが作るウインドウを
アプリケーションの子ウインドウにして再生する方法でムービーを流そうと
試みてるんですが再生開始時にビデオウインドウが準備される様子が
一瞬見えてしまうのですがこれを何とかする方法はないでしょうか?
へっぽこな質問でなんですが、アドバイスお願いします。
ちなみに、このムービーの流すやりたかって適切なんでしょうか?
(DirectShowってみんな使ってるのかな?)
どなたか、DirectShowを使ってムービーを流しているゲームのサンプルソースとか
を公開しているHPを知っていたら教えてください。
っていうか、良い文献ないですかねぇ?

148 名前:名前は開発中のものです。 :02/04/07 03:07 ID:KL8x70+x
DirectX8での当たり判定ってどうやるんすか?
3DでやるにはGetBoxっていうのがあるらしいと、検索出たんですが、
ヘルプには乗ってないんです。
誰か教えてタモーレ

149 名前:名前は開発中のものです。 :02/04/07 03:33 ID:CvXz8lsB
>>148
ガッツと根性で数学の勉強しれ

150 名前:名前は開発中のものです。 :02/04/07 03:49 ID:KL8x70+x
数学?
座標の比較するだけではないの?
バウンティンボックスは分かったがこれって自前で設定するのかな。


151 名前:名前は開発中のものです。 :02/04/07 04:39 ID:???
>GetBox
RM時代にフレームのどうのこうのであったんじゃないでしょうか?
円でも箱でもポリゴンでも,基本的には自前でやるもんじゃないの?

152 名前:名前は開発中のものです。 :02/04/07 05:39 ID:???
>150
それくらい自力で出来ないなら諦めた方がいいよ。

153 名前:名前は開発中のものです。 :02/04/07 05:44 ID:v2QhgIlM
どこの板にでもいるんだな、こういう自作自演君は・・・

154 名前:名前は開発中のものです。 :02/04/07 07:26 ID:???
素直に共分散行列の固有ベクトルを使って最適OBBを計算した方がいいよ。

155 名前:名前は開発中のものです。 :02/04/07 08:22 ID:???
AABBしかやったことないんですがOBBの方がいいのかな?
てゆーか時と場合によるだろうけど・・・
しかし共分散行列の固有ベクトルとか初耳なので勉強してみます.。oO(素直にか・・・)

156 名前:名前は開発中のものです。 :02/04/07 17:15 ID:???
AABBとOBBだと、ピーク時はOBBの方が計算量少なくなるって
話を聞いたことあるな。
どこかに両者を比較した論文あるらしいけど忘れた。

157 名前:名前は開発中のものです。 :02/04/07 18:30 ID:???
(´ー`).。oO(OBBを使ってるゲームなんてあるのかなぁ・・・)

158 名前:名前は開発中のものです。 :02/04/07 23:48 ID:sAXQvgZ2
D3DXIntersect
D3DXComputeBoundingBox
D3DXBoxBoundProbe

159 名前:転がる :02/04/08 00:29 ID:???
BBXとマルチポストなんですが・・・
今回の質問は、ヒラヒラと舞い落ちる葉っぱの表現方法についてです。
キャラクターが木に突っ込んだ時などに、エフェクトとして葉っぱを落としたい
と思っています。
Xファイルから読み込んだ葉っぱを、適当に回しながら落としてみたのですが、
どうやっても独特のヒラヒラ感が出ません。ただ回転して落ちているように見えて
しまいます。
葉っぱのシミュレーションについてご存知の方、よろしくお願いします。

160 名前:名前は開発中のものです。 :02/04/08 02:45 ID:???
>>159
今適当に考えたんですが支点が等速度で落下していく振り子とかはどうでしょう
葉っぱの表面が支点を向くようにして。

161 名前:名前は開発中のものです。 :02/04/08 03:18 ID:lp3UXeXE
>>159
160さんの意見ぽくお手軽にやるなら、

モデリングするとき葉っぱを原点より下に描いて、
レンダリングするときX,Z軸(DirectXの場合)回転を適度に加えるのがいいカモ
(±45度以内でsin使って…とか)
"適当に回しながら"は、Y軸回転だと思うので

シミュとか言われると次元が違いそうで心配ですが(w

162 名前:名前は開発中のものです。 :02/04/08 03:23 ID:???
マウスの入力を取得するのに、DirectInput(DX8)を使ってます

CooperativeLevelに(DISCL_EXCLUSIVE|DISCL_FOREGROUND)を指定して、
WA_INACTIVEを受け取ったらUnacquire()すると、alt+tabで他の窓を
アクティブにしてもマウスが使えます
が、VCのデバッガのブレイクポイントで止まってデバッガがアクティブになると、
マウスが使えなくなってしまいます

NONEXCLUSIVEもフルスクリーンモードもヤなんですが、
対処法を教えてくださぃ

163 名前:名前は開発中のものです。 :02/04/08 06:58 ID:???
>>160
>>161
なるほど、まだためしてませんが、それはいい感じですね・・・
たしかにヒラヒラして見えそうです。厳密にシミュレーションしなくても
それらしく見えればOKですので、これで行きたいと思います。ありがとうございました

164 名前:名前は開発中のものです。 :02/04/08 08:04 ID:M88RZzWM
>>163
適当にまわしながら・・・
は当然1/f揺らぎでね。
(たぶん、葉っぱのゆれも1/f揺らぎ特性があると思われ)

165 名前:名前は開発中のものです。 :02/04/08 13:37 ID:???
>>164
その「適当」具合が一番難しいという罠。

166 名前:名前は開発中のものです。 :02/04/08 14:21 ID:???
ブラウン運動

167 名前:名前は開発中のものです。 :02/04/09 02:43 ID:???
電子雲

168 名前:名前は開発中のものです。 :02/04/09 05:32 ID:???
1/fゆらぎ = ピンクノイズ ≒ ブラウン運動?

169 名前:名前は開発中のものです。 :02/04/09 07:44 ID:JLB9fUqE
>>168
それで良いと思ふ
でも、もしかしたら
1/fゆらぎ = ピンクノイズ ∋ ブラウン運動
かもしれない

170 名前:名前は開発中のものです。 :02/04/09 12:01 ID:???
1/fゆらぎ = ピンクノイズ = フラクタルノイズ

171 名前:名前は開発中のものです。 :02/04/09 13:53 ID:???
>>168-169
ブラウン運動は 1/(f^2) だったような気が・・・。

172 名前:名前は開発中のものです。 :02/04/10 02:07 ID:0pI8WtGk
3Dゲームを作るときに速度や加速度、モーメント等をどの型でとるのが定石ですか?
行列(D3DXMATRIX)にしようかベクトル(D3DXVECTOR3、D3DXVECTOR4)にしようか・・・。
最低限のものだとD3DXVECTOR3なんだろうけど、というかD3DXVECTOR3しかないか。

173 名前:名前は開発中のものです。 :02/04/10 09:23 ID:???
>172
回転モーメント、Matrix以外で表せるの?
普通はMatrixで回転、移動いっぺんに片付けると思ってたが。

174 名前:名前は開発中のものです。 :02/04/10 09:41 ID:???
>>173
モーメントは三次元ベクトル、M(Mx,My,Mz)だよ

175 名前:名前は開発中のものです。 :02/04/10 10:05 ID:???
>>173
ネタですか?

176 名前:名前は開発中のものです。 :02/04/10 14:41 ID:???
>>173
おいおい、運動と座標変換(剛体変換)を混同してないか?

177 名前:名前は開発中のものです。 :02/04/10 23:24 ID:/lR3pti2
>>171
ブラウン運動の位置は1/(f^2)
ブラウン運動の速度は1/f

178 名前:鼻毛 :02/04/10 23:28 ID:3mEoS2rY
3Dバウンディングボックス同士の当たり判定で悩んでいます。
現在、キャラクタが持っている領域情報は、vecMin(左手座標系で手前・左下)とvecMax(同じく奥・右上)で、これらのベクトルと、キャラクタ描画用のMatrixを1セットにしています。
で、これが2セット(バウンディングボックスA、B)あったとして、現在行っている当た
り判定方法は以下のとおりです。

1.バウンディングボックスAの2つのベクトルから、直方体の全頂点に相当するベクトル8つを算出
2.8つのベクトルを、バウンディングボックスAのMatrixでD3DXVec3TransformCoordしてワールド座標に変換
3.更にバウンディングボックスBの逆行列を掛けて、バウンディングボックスBから見た座標系に変換
4.面の方程式を利用して、バウンディングボックスAの12本の辺がバウンディングボックスBの6面と交差していないか検査
5.AとBの立場を変えて1からやりなおす

で、問題というのは、なぜか微妙に当たり判定の位置がずれてしまう事なのです。特に、Matrixにスケーリングの処理が入っていたりすると明らかにずれてしまいます。
なお、vecMinとvecMaxの値は信頼できます。
自己流ですのでもっといい方法があるのかもしれませんが、これしか思いつかなかったので・・・
どなたかご指示を。

179 名前:名前は開発中のものです。 :02/04/11 00:01 ID:???
>>177 サンクス。
水分子の熱運動で駆動されていると考えれば、加速度が白色ノイズになって、
それを積分して得られる速度は確かに1/f(ピンクノイズ)になるね。

180 名前:171 :02/04/11 00:02 ID:???
179=171です。スマソ。

181 名前:名前は開発中のものです。 :02/04/11 01:06 ID:wvSp2EOM
>>178
スケール含みの逆行列掛けるなら、4.の交差判定時も異方性考慮しないと
いけないのが出来てないとかは?

もっといい方法は色々あると思うけど、とりあえずワールドで取る方が楽だと
思う。

182 名前:鼻毛 :02/04/11 20:19 ID:/dNrEQMM
>>181
レスありがとうございます。
スケーリングをしなくてもずれてしまうんです。
そもそも、バウンディングボックスの頂点をワールド座標系→相手の
バウンディングボックスの座標系へと変換する場合、D3DXVec3TransformCoord
を使うというのは正しいのでしょうか?
このへんがイマイチよく分らないままなんです

183 名前:名前は開発中のものです。 :02/04/11 23:07 ID:???
>>182
ワールド座標でやったほうが速いのでは??
さらに、
12本の辺を立場変えて2回もやらなくても、
一方のBOXにもう一方のオブジェクトの6つの頂点が入ってないか
調べるだけで十分。
これだけ単純にしてしまえばズレが出ることはまず無い。
ズレが出てもすぐ見つけられると思うが、どうか?

184 名前:183 :02/04/11 23:09 ID:???
>もう一方のオブジェクトの6つの頂点が

もう一方のBOXの8つの頂点が

の間違いでした。

185 名前:名前は開発中のものです。 :02/04/11 23:18 ID:???
>>183
お答えありがとうございます。

>ワールド座標でやったほうが速いのでは??

ワールド座標系でのやり方がわからなかったんです(汗
それに、8頂点2セットをワールド座標へ変換するのも、8頂点1セットを
ワールド座標系に変換&相手の座標系に変換するのも、コスト的には
変わらないのでは・・・

>一方のBOXにもう一方のオブジェクトの6つの頂点が入ってないか
>調べるだけで十分。

うーん、あんまりレアケースを考えてもキリがないのですが、これだと
細長い物体が交差した場合に判定出来なくないですか?

186 名前:名前は開発中のものです。 :02/04/12 05:33 ID:i7M8RqfU
Direct Input使おうとして、LPDIRECTINPUT8オブジェクトを宣言しようとすると
"error C2146: 構文エラー : ';' が、識別子 'g_pDI' の前に必要です。"
というエラーが起きるのですが、理由がわかりませぬ。
dinput8.libもリンクしてるし、dinput.hもインクルードしているのですが・・・
サンプルをビルドしようとしても同じエラーがおきます。
D3D8オブジェクトは問題ないのですが・・・

誰かお助けを、、

187 名前:名前は開発中のものです。 :02/04/12 06:09 ID:???
>186
多分 ";" が抜けてるんだと思うが、その部分のソース晒せ。

188 名前:名前は開発中のものです。 :02/04/12 06:38 ID:???
>>186
すぐ上でがいしゅつ
dxguid.lib

189 名前:名前は開発中のものです。 :02/04/12 06:48 ID:???
>>182
D3DXVec3TransformCoordはw=1で計算だからあってると思う
あとは簡単なモデルとデバッガで調べればどこがおかしいかすぐわかる
マトリクス自体が誤差の積み重ねで正規直行になってないとか・・
まあ「微妙」がどれくらいかによるけど
>>186

構文エラーなんだからリンク以前の問題でしょう

190 名前:名前は開発中のものです。 :02/04/12 06:51 ID:???
>>189
プ

191 名前:名前は開発中のものです。 :02/04/12 06:58 ID:i7M8RqfU
いやDirectX付属のサンプルでもなるんですが・・・
>>188
それも入れてるんですが

192 名前:名前は開発中のものです。 :02/04/12 07:00 ID:???
>>189
>藁
>構文エラーなんだからリンク以前の問題でしょう

アホか>>189

193 名前:名前は開発中のものです。 :02/04/12 07:10 ID:i7M8RqfU
笑われてしまった・・・
上のログみましたが、dxguid.libはリンクしてるし、うーん、何故だろう・・

194 名前:名前は開発中のものです。 :02/04/12 07:17 ID:jFcfvtj.
# なんか変なのがいるなぁ

>>186
DirectX8のヘッダにパスが通ってない.。
VC++付属のDirectX5のヘッダを読んでるに1票。

195 名前:186 :02/04/12 07:22 ID:i7M8RqfU
>>194
VC付属のdinput.hを消したら上手く行きました。。
VCにDirectXのSDKが付属しているとは知らなかったです。
どうもです。お騒がせしました。。

196 名前:名前は開発中のものです。 :02/04/12 07:34 ID:???
>>182
なぜ貴方様がこのようなところに!

197 名前:名前は開発中のものです。 :02/04/12 07:42 ID:hwRIELgs
>>195
け・・・消さなくても良いのに

198 名前:186 :02/04/12 08:08 ID:i7M8RqfU
>>197
イヤ本当はリネームですが、、
インクルードディレクトリの優先順位を一番上にすればよかったんですね、本当は。

199 名前:名前は開発中のものです。 :02/04/12 08:45 ID:HHg4tI.6
200Get!
志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望志望
カフ
ビーグル

200 名前:名前は開発中のものです。 :02/04/12 09:37 ID:t1MnZNUs
なにもわかっていない189に幸あれ!!
そして200ズサー

201 名前:名前は開発中のものです。 :02/04/12 09:41 ID:sNQyI/Ws
>>189
どうもです。
vecMinとvecMaxはポリゴンとして表示してますから、値は信頼できます。
で、バウンディングボックスのMatrixも、同様に信頼できるわけです。
後考えられるのはD3DXVec3TransformCoordによる計算誤差くらいのもの
なんです・・・誤差が問題なんでしょうか・・・マイッタナー

202 名前:名前は開発中のものです。 :02/04/12 21:10 ID:wmHrPQzY
Direct 3Dで、今までメインルーチンでジョイスティック等の入力情報を取得した後
描画していたのですが、
ゲームの速度を一定にするためにタイマーを使って入力を取得するようにしたら、
動きがカクカクになってしまいました。
具体的にはプロシージャのWM_TIMERメッセージ毎に、1/1000秒単位で入力情報を取得しています。
他のタイマー関数などを使ったほうがいいのでしょうか?

ちなみにFPSは殆ど変わっていないのですが・・・

203 名前:名前は開発中のものです。 :02/04/12 21:15 ID:???
>>202
WM_TIMERはウィンドウメッセージの中でも最もプライオリティの低い物ですよ。
(WM_PAINTよりは上だったっけ?)

それと1/1000秒間隔で入力を取得するのは意味がないし、多くのジョイスティック
はそんなに速く反応できません。物によっては1/100秒でも無理です。

204 名前:名前は開発中のものです。 :02/04/12 22:31 ID:???
>>203
> WM_TIMERはウィンドウメッセージの中でも最もプライオリティの低い物ですよ。
しかも、メッセージキューに複数の WM_TIMER がたまると一つにまとめ
られるし。(そうでないと困るんだけど)

1/1000 秒で WM_TIMER を投げても、実際にはかなり不規則・長い間隔で
WM_TIMER が一つ飛んでくるだけ。

205 名前:202 :02/04/12 23:40 ID:wmHrPQzY
なるほどWM_TIMERは駄目でしたか。
しょうがないのでtimeGetTimeなど使ったらだいぶ改善しましたです。
しかしこれでもまだスムーズにいかんです。
昔みたいにVsyncでも使おうかな、、

206 名前:名前は開発中のものです。 :02/04/13 00:48 ID:???
timeGetTimeでスムーズにならないならばプログラムに問題あり。
ハードの性能とプログラムのバランスがとれていないとか。
ちなみにDirectXのバージョンがDebugとRetailでは動作が変わるが知ってるよね?

207 名前:名前は開発中のものです。 :02/04/13 01:05 ID:nn/6jc3U
動作かわんの?! エラーチェックが厳しいだけちゃうんか?

208 名前:名前は開発中のものです。 :02/04/13 01:10 ID:???
チェックが厳しいから動作がはるかに重くなる。

209 名前:名前は開発中のものです。 :02/04/13 01:12 ID:???
はるかに遅いか?
Debugモードでも問題あるプログラムの方がおかしいような
素Pentium@133とかならしらんけどさー

210 名前:名前は開発中のものです。 :02/04/13 01:24 ID:???
デバッグモードで遅くなるのはMSのサイト見たほうが早いが
DirectXのバージョンによってはデバッグモードではそのほかにマウスカーソルがカクカクするらしい

211 名前:202 :02/04/13 02:08 ID:nprCXGIE
うちの環境では、Releaseで実行速度優先にしても、FPSを見る限りはあまり変わりませんね。
元が400FPSぐらいでるプログラムだったので、400/1秒ぐらいの精度が求められる
タイマー求めるのは贅沢ですかね、、、

212 名前:名前は開発中のものです。 :02/04/13 02:25 ID:???
>>211
それはコンパイラのDebugモード。
上に書かれているのはDirectXのDebugモード。

213 名前:名前は開発中のものです。 :02/04/13 04:39 ID:???
>>211
timeBeginPeriod使ってる?

214 名前:名前は開発中のものです。 :02/04/13 06:03 ID:???
市販のゲームでdebugとretailと再頒布用のランタイムでそれぞれ動作違うのがあるよね(藁

215 名前:名前は開発中のものです。 :02/04/13 06:20 ID:???
スタート→設定→コントロールパネル→DirectX→各モード
debugとretail変えながらSDKのサンプル動かせばどれだけ差があるかわかる罠。
debugじゃサンプルのMFCFogが遅すぎて使い物にならないがretailだと滑らか@Win98、DirectX8.1、128MB、VooDoo3

216 名前:名前は開発中のものです。 :02/04/13 06:52 ID:???
Pentium2 392MHz、Win2000、DirectX 8.1、384MB、TNT2 32MBでテスト。

debug: 180fps
retail: 350fps

まさか倍違うとは。

217 名前:名前は開発中のものです。 :02/04/13 08:11 ID:???
バージョン8.1でDirectInputを使うと、コンパイルするときに
DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
の警告が出ます。動作には支障はないんですが、なんか気持ち悪いので
消したいです。どうすればいいでしょうか?

218 名前:名前は開発中のものです。 :02/04/13 08:53 ID:???
>>217
メッセージ見ろよ…

219 名前:名前は開発中のものです。 :02/04/13 11:50 ID:mB6ENfdk
Direct Inputの初期化で、キーボードの強調レベルをセットしようとすると
SetCooperativeLevel関数がDIERR_INVALIDPARAMを返します。
ジョイスティックは大丈夫なのですが、原因が解りません。
誰か教えてください

if(FAILED(hr=DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(VOID**)&g_pDI,NULL)))
return hr;
if(FAILED(hr=g_pDI->CreateDevice(GUID_SysKeyboard,&g_pKeyboard,NULL)))
return hr;
if(FAILED(hr=g_pKeyboard->SetDataFormat(&c_dfDIKeyboard)))
return hr;
hr=g_pKeyboard->SetCooperativeLevel(hWnd,DISCL_EXCLUSIVE);
if(FAILED(hr)){
if(hr==DIERR_INVALIDPARAM){
MessageBox( hWnd,"sine","aho",MB_OK);
}
return hr;
}

220 名前:名前は開発中のものです。 :02/04/13 12:07 ID:???
>>219
少しくらいHELP読め

IDirectInputDevice8::SetCooperativeLevel
>アプリケーションは、DISCL_FOREGROUND または DISCL_BACKGROUND のどちらか一方を指定しなければならない。両方指定することも、まったく指定しないこともエラーとなる。
>同様に、アプリケーションは、DISCL_EXCLUSIVE または DISCL_NONEXCLUSIVE のどちらか一方を指定しなければならない。

221 名前:219 :02/04/13 12:12 ID:mB6ENfdk
>>220
即レス有難うございます。
これでアホダイアログが出ずにすみます。

222 名前:名前は開発中のものです。 :02/04/16 07:38 ID:KKgE4dNw
Xファイルサンプルがわからねぇー

皆どうしてる?
ちなみにスキンメッシュの方。
誰か解説しておくれ

223 名前:名前は開発中のものです。 :02/04/16 07:53 ID:???
xファイルの読込関係専門のスレに解説(つか、やりとり)があったはず

224 名前:なまえをいれてください :02/04/18 03:51 ID:mMey5w46
3DXでDiectXプログラム初心者です。

ライブラリの関数内でよくハングするのですが、
みなさんデバックってどうやっていますか?

使い方がいけないのだとは思いますが、
出来ればMFCのようにライブラリ内部のコードまで追うことができれば
原因もつかみやすいのですが....

玄人のかた宜しくお願いします。

225 名前:名前は開発中のものです。 :02/04/18 04:24 ID:gMNkMEys
nai

226 名前:名前は開発中のものです。 :02/04/18 07:41 ID:gMNkMEys
とりあえずテンプレートとファイル読み込みの勉強するか。。。

227 名前:名前は開発中のものです。 :02/04/19 01:34 ID:ElxWJZ42
DirectSoundBuffer から DirectSoundNotify を取得できなくて困っています。

バッファは 非プライマリ で
DSBUFFERDESC dsbd;
ZeroMemory(&dsbd, sizeof(dsbd));
dsbd.dwSize = sizeof(dsbd);
dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS | DSBCAPS_LOCDEFER;
dsbd.dwBufferBytes = dataSize;
dsbd.lpwfxFormat = &waveFormat;

というデスクリプションで作成しており、

HRESULT hRet = pバッファ->QueryInterface(IID_IDirectSoundNotify, (LPVOID*) &受け取るポインタ);

という感じで取得しようとしているのですが、
QueryInterface に失敗してしまいます。

どうしてなのでしょうか?よろしくお願いします。

で取得しようとしている

228 名前:227 :02/04/19 01:55 ID:nuN89apc
フラグが足りないだけでした…
DSBCAPS_CTRLPOSITIONNOTIFY ですね。

鬱。

229 名前:名前は開発中のものです。 :02/04/19 15:24 ID:mCs8PDIE
DXライブラリっていうのでいろいろ試しながら勉強してるんですけど、
フルスクリーンのFlipがウインドウモードに比べてかなり遅いです。
これって、普通なんですか?
それとも、DXライブラリがなんかおかしいんですか?

230 名前:名前は開発中のものです。 :02/04/19 16:13 ID:???
>>229
DXライブラリってD3DXか?
そもそもウィンドウモードではFlipじゃなくBltになるが、
遅くなるのは環境次第じゃないか?
とりあえず自分の環境書け。

231 名前:名前は開発中のものです。 :02/04/19 16:21 ID:???
>229
マジレスすると、ウインドウモードの場合、リフレッシュレートに左右されないが、
フルスクリーンでプライマリサーフィスのFlipを使うとモニタのリフレッシュレートの上限でしか
更新できなくなる。

232 名前:名前は開発中のものです。 :02/04/19 16:26 ID:mCs8PDIE
>>230-231
どうもサンキューです。
DXライブラリってこれのことです。
http://homepage2.nifty.com/natupaji/DxLib/

233 名前:名前は開発中のものです。 :02/04/19 23:04 ID:j6.t32zw
おい、誰かいるかー?

234 名前:名前は開発中のものです。 :02/04/19 23:16 ID:???
>>233
何か?

235 名前:名前は開発中のものです。 :02/04/19 23:24 ID:qxqX/Wuc
シツモン!
参照カウントってなんすか。

これはてんぷれーと系の単語?

236 名前:名前は開発中のものです。 :02/04/19 23:42 ID:???
>235
ヘルプ読め。

>オブジェクトは、参照カウントが 0 になると解放される。
>AddRef メソッドを呼び出すと、オブジェクトの参照カウントは 1 だけ増加する。

237 名前:名前は開発中のものです。 :02/04/20 00:13 ID:???
>>235
http://www.fsinet.or.jp/~nito/CocoaClub/article02.html
こんな感じか?
この場合、ココアだけど。

238 名前:名前は開発中のものです。 :02/04/20 03:55 ID:jnbDEuhc
>>237
thx!!

239 名前:名前は開発中のものです。 :02/04/21 23:33 ID:PLg4cUfA
なんかいろんなところでFlipすると必ず垂直同期を待つみたいなこと
言ってる人がいるけど、待たないFlipもできるんですが・・・
(リフレッシュレートに依存するからFlipは使うべきではないとか言ってる人の気持ちがわからん)
皆知らないだけ?思いっきりヘルプに載ってると思うんですが・・・
何でこのことが話題にすら出ないのか、かなり謎なんですが・・・

240 名前:名前は開発中のものです。 :02/04/21 23:41 ID:???
>>239
逆に聞きたいが、ティアリングが起こるFlipを使うメリットはあるのか?

241 名前:名前は開発中のものです。 :02/04/21 23:55 ID:???
>>240
ティアリングが起こってもかまわないなら、BltよりはFlipの方が速いから
ベンチマーク目的なんかでは使うことはあるな。

>>239
一応言っておくと、NOVSYNCは使えない場合もあるよ。
NOVSYNCを指定したからといって本当にVSYNCを待たないかどうかはドライバ
次第。ドライバによってはNOVSYNCを指定しても常に待つものもあるし、
指定しなくても待たないものもある。

242 名前:名前は開発中のものです。 :02/04/22 00:08 ID:???
>>239
マ板のリフレッシュレートスレが詳しいと思う。

243 名前:名前は開発中のものです。 :02/04/22 01:26 ID:???
Direct X8で、いままでDrawPrimitiveUPを使ってたのですが、
DrawPrimitiveでたとえば(1,1,1)の座標に描画したい時って
D3DXMatrixTranslation(&objMat,1,1,1)
みたいに使うんですか?
なんか上手くいかんのですが、、、、

244 名前:名前は開発中のものです。 :02/04/22 03:30 ID:???
>>243
DrawPrimitiveUPで(1,1,1)の座標に描画したい時は
どうしていたのかと

245 名前:243 :02/04/22 09:21 ID:bz.uCQ66
具体的にいうと、SetTransformでワールド座標にセットすると、
その前に描画していたポリゴンが消えてしまうのです。
SetTransformをコメントアウトすると前に描画していたのは残ってるのですが・・・

D3DXMatrixTranslation(&objMat,1,1,1);
lpD3DDEV->SetTransform(D3DTS_WORLD,&ObjMat);
lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));;
DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);

ってやってます

246 名前:名前は開発中のものです。 :02/04/22 16:40 ID:???
>>245
状況がよくわからんけど
lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));;
DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
D3DXMatrixTranslation(&objMat,1,1,1);
lpD3DDEV->SetTransform(D3DTS_WORLD,&ObjMat);
lpD3DDEV->SetStreamSource(0,obj[0],sizeof(LVERTEX));;
DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
こうするとどうだ?

247 名前:  :02/04/22 21:48 ID:FyuY6QgE
http://tmp.2ch.net/test/read.cgi/download/1019446859/
皆さんの力で助けて下さい。

248 名前:名前は開発中のものです。 :02/04/22 22:11 ID:mGNBYW3s
from BBX
>プログラムのコメントの書き方が、あまりよくないと思います。
>「サーフェスを得る」や「イメージサーフェスを作成」などといったことは、
>使っている関数名(メソッド名)などを見れば一目で判りますし、
>逆にそれで判らなければプログラマとしてまずいです。
>
>自分で後からそのプログラムソースを見たり、他人が見たりした時、
>知りたいのは「サーフェスを得ているかどうか」ではなく、
>「なぜサーフェイスを得ているのか、何の目的なのか」ということだと思います。
>だから一連の処理の頭に「処理の目的、簡単な流れ」を書けばそれで十分だと思います。
>関数を使う毎に、その関数のただの日本語名のような文章を書いていると、
>意味の少ないコメントが乱立して、メンテナンスし難くなる場合が多いです。
うぜえええ。なんでこんな事まで言われにゃならんのだ

249 名前:名前は開発中のものです。 :02/04/22 22:23 ID:???
あれ、いつのまにBBXのアドレス変わったんだ?
>>248
確かにうざいが、引用にこの一文が抜けてるぞ
「あと、余計なお世話だとは思いますが、」

まぁ、いいじゃん、相手どうみても初心者だし。
つか引っかかるほどのもんじゃないし、
言われた本人がプライド傷つけられて来たのかな(・∀・)ニヤニヤ

250 名前:名前は開発中のものです。 :02/04/22 22:28 ID:???
>>248
一連の流れからするといわれてもしゃーないねー。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.