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


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

DirectX総合スレ



1 名前:名前は開発中のものです。 [04/05/05 12:33 ID:dP7V/vQq]
DirectXについては基本このスレで話していこうとものです。
基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。


189 名前:名前は開発中のものです。 mailto:sage [04/07/13 00:53 ID:q9x7UC3I]
VC++6.0でXファイルを表示することができたけど、
このXファイルをプログラム内で変形させたり、
歩かせたりしたいのに、参考になるサイトが見つからないYO!

歩かせるのってもしかして体のパーツを別々に作らなくてはならない・・・?
変形させるのってXファイルから座標の情報が分かれば大丈夫だと思うけど、
どういう風に取得するのやらOTL

190 名前:名前は開発中のものです。 [04/07/13 01:03 ID:4wlf1v+d]
bakaな質問しますけど、DirectX7対応ゲームをプレイする為に
DirectX8完全対応なゲフォ4に
無理矢理DirectX7とDirectX7用の古いグラフィックドライバーを
インストールするのは無理があるでしょうか?

DirectX7環境のほうがスムーズな2D描画できると思うんで。

というか未対応にもかかわらず古いグラフィックドライバーぶっこむと
グラボぶっ壊れるかな・・・・・

191 名前:名前は開発中のものです。 mailto:sage [04/07/13 01:33 ID:/CvgO/Ka]
>>189
DirectX9にtinyのサンプルあるから見とけよ。
 
>>190
違うビデオチップのドライバを無理やりインスコして壊れない保障はない。
んなの当たり前。つーか板違い。自作PC板のゲフォスレで聞きな。

192 名前:名前は開発中のものです。 mailto:sage [04/07/13 02:39 ID:y7gDmdRZ]
>>190
そもそも、ゲーム開発ではなくゲームプレイで何を言ってる?

DirectX7で作られたバイナリの処理が、
DirectX8環境で実行させると全く違う物になると言いたいの?
だからDirectX7をインストールしたいと…

DirectX7でブロック転送やらで作られた処理のバイナリを
DirectX8環境で実行させると、勝手にスプライト処理とかになって遅くなると
そんな感じに思ってるの?

193 名前:名前は開発中のものです。 mailto:sage [04/07/13 07:21 ID:DBRzcV3o]
>>192
DirectXにスプライト処理が存在すると、
そんな感じに思ってるの?

194 名前:名前は開発中のものです。 mailto:sage [04/07/13 07:43 ID:5llfoY9v]
最近バカみたいな質問が多いのは、バカが増えたからだよな。

195 名前:名前は開発中のものです。 mailto:sage [04/07/13 08:34 ID:jzwdFF+S]
期末テストも終っただろうしな。

196 名前:名前は開発中のものです。 mailto:sage [04/07/13 10:07 ID:rkvj0E5C]
にっぽんの将来は、まっくらだ


197 名前:名前は開発中のものです。 mailto:sage [04/07/14 03:03 ID:YAk9BLuw]
ふと思ったんだけど、
結局IDirect3DDevice9::PresentはどういうときにVSYNCと同期とるの?
ウィンドウモードでもVSYNC待ちするん?



198 名前:名前は開発中のものです。 mailto:sage [04/07/14 05:47 ID:MG298uj6]
ヘルプの D3DPRESENT_PARAMETERS構造体の
PresentationIntervalを読めば、その謎は解決すると思う
俺もちょうどこの前、同じところで悩んで調べたとこ

199 名前:名前は開発中のものです。 mailto:sage [04/07/14 10:52 ID:Wq2xcMIa]
>>197
>ウィンドウモードでもVSYNC待ちするん?
 
するよ。自動。

200 名前:名前は開発中のものです。 mailto:sage [04/07/14 15:27 ID:TrdtPjRg]
難しい会話してますね。

201 名前:名前は開発中のものです。 [04/07/14 15:38 ID:6+nKd7SH]
文字が炎で浮かびあがるみたいなのを再現したいのですが
どうすればいいですかね?

202 名前:名前は開発中のものです。 mailto:sage [04/07/14 15:47 ID:7a2ZlvXB]
>>172
ここで聞くよりネットで探したほうが遥かに早い。
古くはDirectDrawやGDI、
最近のならDirect3DやらShaderやらソースは転がりまくりだ。

203 名前:名前は開発中のものです。 mailto:sage [04/07/14 16:35 ID:Wq2xcMIa]
セルオートマトン

204 名前:名前は開発中のものです。 mailto:sage [04/07/14 16:37 ID:cSqrSSKt]
ライフゲーム

205 名前:名前は開発中のものです。 [04/07/14 17:39 ID:8+MeTEKK]
本もってる人しか分からない質問でスマソ。
「DirectX9vol.2 3Dゲームプログラミング C#によるキャラクタの歩行アルゴリズム」
って本なんですが。
サンプル(リスト5.5)をC++に直して実行したんですげど、
キャラクタが一歩進んで逆モードになったとたんに上半身の姿勢が傾いて
その後はそのまま歩行するんですが、これって仕様ですか?
真っ直ぐの姿勢のまま歩行させたいんだけど、何時間も迷ってます。
お助けを・・・。

206 名前:名前は開発中のものです。 mailto:sage [04/07/14 18:13 ID:L7fgGGCl]
サンプルそのまま動かしてみて
違う動作なら自分のバグだろう


207 名前:名前は開発中のものです。 [04/07/14 19:57 ID:8+MeTEKK]
>サンプルそのまま動かしてみて
実は動作させる環境が無いんです(win98のk6-2 350mhz vc++5.0)



208 名前:189 mailto:sage [04/07/14 21:02 ID:rbPUkRjn]
tinyのサンプル見て何がなんだか分からなかったけど、
サンプルのコードの一部をコピってぐぐってみたらそれらしいHPがでてきました。
頂点シェーダーっていうのをぜんぜん知らなかったよ。
これからまた勉強します。
ありがとうございました。

209 名前:名前は開発中のものです。 mailto:sage [04/07/14 21:17 ID:uOZXkB+P]
>>205
仕様かどうかはソース見ればわかるでしょ。

210 名前:名前は開発中のものです。 [04/07/14 23:14 ID:+gnIx0lG]
ここも某BBXも、完全に厨房王国と化してしまったな。


211 名前:名前は開発中のものです。 mailto:sage [04/07/14 23:17 ID:AbhzswCG]
夏到来だぜ

212 名前:名前は開発中のものです。 mailto:sage [04/07/14 23:17 ID:Wq2xcMIa]
夢を見る210

213 名前:名前は開発中のものです。 [04/07/14 23:33 ID:3SlC6+or]
>>189
VERTEX構造体に、ブレンド値(ウェイト=行列補間値 = wM+(1-w)M )を入れるんだよ。
D3DのドキュメントのGeometry Blendingを読め。



214 名前:213 [04/07/14 23:36 ID:3SlC6+or]
補足:
ブレンドする行列をそれぞれM1,M2とすると、ある頂点のウェイトw [0,1]によって頂点を変換する行列M'を求める。
M' = wM1+(1-w)M2


215 名前:197 mailto:sage [04/07/14 23:41 ID:YAk9BLuw]
>>198-199
おお、設定できるのか。
見逃してました。マジでありがとん

216 名前:名前は開発中のものです。 mailto:sage [04/07/14 23:56 ID:o3zClHdn]
>>213
行列を補間しちゃうの?

217 名前:名前は開発中のものです。 [04/07/15 00:02 ID:a0RqXKRX]
>>214は大嘘な。



218 名前:名前は開発中のものです。 [04/07/15 00:16 ID:5qtxwqQC]
パーティクルって何?

219 名前:214 [04/07/15 00:20 ID:74XWLGbU]
>>216
そうだよ。
SetTransform() で、WORLD1に、M1, WORLD2にM2を設定する。
あと、全ての頂点にブレンド値wを設定。
バーテックス・ブレンディングの変換行列はこうなる。
M' = wM1+(1-w)M2
これは線形補間。

>>217
素人さんは書き込み遠慮願えますか?


220 名前:名前は開発中のものです。 mailto:sage [04/07/15 00:20 ID:RZa6M6YU]
>>218
粒子

221 名前:名前は開発中のものです。 [04/07/15 00:36 ID:5qtxwqQC]
炎で文字を表現していのですがどうすればできますかね?

222 名前:名前は開発中のものです。 mailto:sage [04/07/15 00:39 ID:me8K4ngQ]
つまんね

223 名前:名前は開発中のものです。 mailto:sage [04/07/15 00:44 ID:J2QoNYbd]
>>219
マジで行列を補間すると思っちゃってるの?
>D3DのドキュメントのGeometry Blendingを読め。
アンタこそよく読んだほうがいいよ。

224 名前:名前は開発中のものです。 mailto:sage [04/07/15 00:48 ID:s7S1auKv]
>>219
それは拡大縮小のやり方?
頂点すべてにwをかけて、
wを変化させることで拡大縮小を行うという意味?

225 名前:名前は開発中のものです。 [04/07/15 01:05 ID:74XWLGbU]
>>224
まったく違う。ボーン数1のとき,
ブレンドする行列をそれぞれM1,M2とすると、ある頂点のウェイトw [0,1]によって頂点を変換する行列M'をD3Dが求め、その変換行列によって頂点をD3Dが変換する。
M' = wM1+(1-w)M2 ← D3Dが行列M1→M2をウェイトwで補間する。
例えば、CUSTOMVERTEX構造体はこんな感じ。
{
 D3DVECTOR3 coord;
 float    w; ←区間[0, 1]
}
ユーザーが設定するのは、
頂点座標をPとすると、変換後の座標P'= PM'となる。

>>223
おまえまったく判ってない。


226 名前:225 [04/07/15 01:08 ID:74XWLGbU]
ユーザーが設定するのは、上の例の場合、M1,M2のWORLDマトリックスと、すべての頂点のw。
ウェイトが1であれば、100% M1となり、0であれば100% M2となり、0.5であれば、(M1*0.5 + M2*0.5)となる。

227 名前:225 [04/07/15 01:10 ID:74XWLGbU]
>>223
こういうアホがいるからみんな消えていくわけだな。




228 名前:名前は開発中のものです。 mailto:sage [04/07/15 01:37 ID:J2QoNYbd]
>>225
だから違うよ。
変換後の座標をウェイト値で合成するんだろ。
行列を線形補間してそのまま使ったりしたらまずい。

229 名前:名前は開発中のものです。 [04/07/15 01:44 ID:a0RqXKRX]
>>225
久しぶりに正真正銘のバカを見たわ。
>>216,>>217>>223
をどう読んだのか?

あと「行列を補間する」の意味を教えれ。

230 名前:名前は開発中のものです。 [04/07/15 01:50 ID:a0RqXKRX]
>>225の発言を抜粋。

「素人さんは書き込み遠慮願えますか? 」
「おまえまったく判ってない。 」
「こういうアホがいるからみんな消えていくわけだな。 」

・・・鬱だ氏んでくれ>>225

231 名前:名前は開発中のものです。 [04/07/15 02:33 ID:5qtxwqQC]
炎の文字はどうやって表現すれば・・・

232 名前:名前は開発中のものです。 mailto:sage [04/07/15 03:28 ID:ArWlyibQ]
>>225
スキニングによるボーン処理のweightと
ボーン変換における各key_frame間の補間が
混同されすぎてます。

key_frameが十分細かく設定されているなら貴方の言う補間処理は不要でしょう。
しかし、頂点が複数のボーン影響を受ける事とは別の話です。

スキニング、ボーンのウェイト、姿勢の補間を理解する事をお勧めします。

233 名前:名前は開発中のものです。 mailto:sage [04/07/15 03:55 ID:WZCfEE8K]
>>231
可愛そうだからマジレスしてやると、
その技術はDirectXとは全く関係が無い。
結論を言うと、スレ違いだね。

適切なスレで質問すると良いだろう。

234 名前:名前は開発中のものです。 mailto:sage [04/07/15 04:30 ID:37qRmEuN]
DirectDrawでウィンドウモードで完全にVSYNCさせるのって無理?

235 名前:名前は開発中のものです。 mailto:sage [04/07/15 07:22 ID:74XWLGbU]
>>228

「 変換後の座標をウェイト値で合成するんだろ。
行列を線形補間してそのまま使ったりしたらまずい。 」

たしかに、D3Dではベクトルを合成しているのは認める。しかし、
V'= V{wM1+(1-w)M2}, V'= wVM1+(1-w)VM2
この2式の結果は同じ。嘘だと思うなら試してみ。



236 名前:名前は開発中のものです。 mailto:sage [04/07/15 07:24 ID:74XWLGbU]
>>229
> あと「行列を補間する」の意味を教えれ。
M' = wM1+(1-w)M2
って定義してんだろ。
> ・・・鬱だ氏んでくれ>>225
おまえがしねよ。数学もできないでプログラマなんかやってんじゃね。


237 名前:名前は開発中のものです。 mailto:sage [04/07/15 09:23 ID:yYZscXA7]
行列の線形補間は可能に一票。
ただし、行列の段階だろうが座標だろうが、
元が行列のデータを補間すると回転要素の劣化が激しいので、
補間が前提であれば、成分を混ぜた物を使う時点で愚策。
行列でしかデータを吐けないエクスポーター等は使うべきではない。
行列の場合は、補完しなくてもいいように、
細かくデータを吐きだして無駄にデータ量をとるのを覚悟するしかない。



238 名前:名前は開発中のものです。 [04/07/15 13:37 ID:Z96KWdeU]
>>225, >>235, >>236
おまえがしねよ。同次座標も同次変換も知らないでプログラマなんかやってんじゃね。

> たしかに、D3Dではベクトルを合成しているのは認める。しかし、
> V'= V{wM1+(1-w)M2}, V'= wVM1+(1-w)VM2
> この2式の結果は同じ。


(゚Д゚)ハァ?


239 名前:228 mailto:sage [04/07/15 14:14 ID:znH2PgHO]
>>235
だから変換後に合成するのと合成した行列で変換するのは違うって。

たとえば単位行列とY軸で180度回転してる行列を補間してみればわかる。
これは極端な例だけど回転要素が近い行列同士でも
この問題が起きてるので線形補間してそのまま使うのはまずいって。

240 名前:名前は開発中のものです。 mailto:sage [04/07/15 14:43 ID:5CaSOcVA]
それ例は、行列の補間でも、変形後の座標の補間でも、同じだと思われ。

このスレにはバカしかいないのか?

241 名前:名前は開発中のものです。 mailto:sage [04/07/15 14:59 ID:TlmwfOpa]
189が惑わされているといけないから言っとく。
サンプル通りに変形済みの頂点合成しとけば問題ない。
頂点シェーダに手を出したら、とりあえずトゥーンシェーディングをやって見る。
案外面白いから。
テクスチャの使い方を学ぶ良いサンプルだと思うし。

スキニングで行列を補間するメリットってあるの?

242 名前:名前は開発中のものです。 mailto:sage [04/07/15 15:00 ID:Lf5cLVAP]
引き篭もりは多いが、バカは >>240 ぐらいだろ。

243 名前:名前は開発中のものです。 mailto:sage [04/07/15 15:26 ID:qBCUW8sZ]
>>240
面倒なんで一行目だけ
・単位行列
1 0 0 0
・Y軸で180度回転
-1 0 0 0
これをウエイト0.5で補間したら
0 0 0 0
になってまずいだろ。
これは極端だとしても違う回転要素の行列を線形補間しただけだと
スケーリングが掛かったような変な行列になる。

回転要素が違う行列を線形補間したものと
クォータニオンやオイラー角を補間してそれで作った
行列の中身は違うだろ。

244 名前:名前は開発中のものです。 mailto:sage [04/07/15 15:30 ID:qBCUW8sZ]
>>242
>>235 もバカでしょ。
同一人物だとしたらもう手に負えないんで
もう行列の補間が正解でいいです。

245 名前:名前は開発中のものです。 mailto:sage [04/07/15 15:31 ID:yYZscXA7]
補間が前提ならクオータニオンを使うべき。
行列はどのような方法を使おうと、回転要素に問題が発生する。
ちなみにクオータニオンを使っても、180度をブレンドなら、かなりのゆがみが発生する。
行列ならゆがみを通り越して、ひしゃげる。

246 名前:名前は開発中のものです。 mailto:sage [04/07/15 15:36 ID:yYZscXA7]
勘違いをしていたが、スキニングのウエイトか。
アニメーションとかモーションブレンドの話をしてた。
ちょっと逝ってくる。

247 名前:240 mailto:sage [04/07/15 15:54 ID:37qRmEuN]
>>243
さっきも書いたが、
変換後の補間するやり方で、その例をやってみろよ。

同じ結果になるだろ。
なぜなら、行列の補間も、変換後の座標の補間も、どっちも所詮線形変換だから。

自分が本当のバカであることを証明したいだけなのか?




248 名前:240 mailto:sage [04/07/15 15:58 ID:37qRmEuN]
>>244
行列の補間は間違い。

行列の補間は同次座標を含めた4次元座標での線形補間、
変形後の座標の補間はもちろん3次元座標での線形補間。

どちらも単なる線形補間なのでそもそも「正しい」など言えないのだが、
ウェイトを使ったブレンディングの概念により近いのは明らかに後者。

249 名前:240 mailto:sage [04/07/15 16:04 ID:37qRmEuN]
書き忘れたが、
>>243の例で、二つの方法の結果が等しくなるのは、
用いられている二つの行列が、同次座標を変化させない変換を表しているから。

まさかここまで言わないと理解できないほどのバカはいないと思うが、念のため。

250 名前:名前は開発中のものです。 mailto:sage [04/07/15 16:20 ID:YX0jyFzX]
>なぜなら、行列の補間も、変換後の座標の補間も、どっちも所詮線形変換だから。
>行列の補間は同次座標を含めた4次元座標での線形補間、

もうアンタの勝ちです。間違いない。

251 名前:名前は開発中のものです。 [04/07/15 21:59 ID:nzaxTIty]
水、雷を表現したいのですがどういった方法がありますでしょうか。

252 名前:名前は開発中のものです。 mailto:sage [04/07/15 22:14 ID:6ceo0B9C]
>>251
パーティクル、ストリップ、etc。

253 名前:名前は開発中のものです。 [04/07/15 22:28 ID:6ceo0B9C]
と思ったらまたマルチポストか・・・。

マジレスすると、SIGGRAPHの論文でも読め。
で実装できたらこういうところで発表するとヒーローになれるぞ。
lucille.sourceforge.net/cgi-bin/sbr2004/wiki.cgi?page=FrontPage

「レンダリング、アニメーション関連などの見た目でデモが分りやすいのがよいかと」
とあるのでテーマとしてはいい感じのはず。
がんばれ厨房!

254 名前:名前は開発中のものです。 mailto:sage [04/07/16 00:23 ID:3qkX9w8Z]
>>221,231,251
1.炎、水、雷などを写真に撮ります。
2.ビルボードで表示したいように並べます。
3.ヽ(゚∀゚)ノヤッター!!

255 名前:名前は開発中のものです。 mailto:sage [04/07/16 00:25 ID:3qkX9w8Z]
>>234
>>199

256 名前:189 mailto:sage [04/07/16 00:35 ID:rarOkq+Y]
結局意味分からんかった。
もっと勉強して出直してきます。
ご迷惑かけました。マジで。

257 名前:名前は開発中のものです。 mailto:sage [04/07/16 04:30 ID:OS1hTRz1]
>>255
>DirectDrawでウィンドウモードで完全にVSYNCさせるのって無理?

いや、DX8以降のD3Dと統合されたのではなく、
DDrawでの話しなんすが。



258 名前:名前は開発中のものです。 mailto:sage [04/07/16 07:54 ID:PHtkNvW+]
>>257
今ヘルプ見られないから適当だが、同期とる関数がある。

259 名前:名前は開発中のものです。 mailto:sage [04/07/16 08:04 ID:8sJyX39C]
D3DPRESENT_PARAMETERSのPresentationInterval = D3DPRESENT_INTERVAL_ONE ;
じゃねーの。


260 名前:257 mailto:sage [04/07/16 10:31 ID:x3ikW9YG]
>>258
言われてみてもう一度よくさがしてみたら、
>IDirectDraw7::WaitForVerticalBlan
>メソッドは、アプリケーションが垂直帰線消去間隔と共に同期する方法を提供する。
あったあった、これっぽいね。thx

しかし、D3DとDDrawの区別が付かないやつって多いのか?
まぁDX8以降マニュアルからも消えちゃったし、しょうがないのか…


261 名前:名前は開発中のものです。 mailto:sage [04/07/16 11:41 ID:iwAzj5Mk]
>>259
>D3DPRESENT_INTERVAL_ONE
 
DX9以降、それは使わない。ヘルプ参照。

262 名前:名前は開発中のものです。 mailto:sage [04/07/16 15:24 ID:tp+KxRbP]
>>260
微妙に困るよね>DDrawのマニュアル
まぁDX7SDKのマニュアルありゃ済む話ではあるが

263 名前:名前は開発中のものです。 mailto:sage [04/07/16 19:45 ID:4tunO0kM]
>>262
それがDX8以降のサンプルを見ると、微妙に変更点があるっぽいんですよね。
(ラッパー関数が増えた?)
ぱっと見て違うのが、DDオブジェクトをnewで確保してたりとか。
C#のガベージコレクタを効かせるためなのかな?
そういう変更点の説明がまったく無いのがなんとも気持ち悪い。

264 名前:名前は開発中のものです。 [04/07/17 15:48 ID:YfC7nJ2s]
>>256
いや、お前は別に何も悪くない。
悪いのは、>>213, >>219, >>225, >>228, >>236, >>243のような、
忠告を繰り返し無視した上で大嘘を連発する、数学もできないバカプログラマー達だ。

まあこのスレの住人はほとんどそういう奴らばっかなのは事実だが。

265 名前:名前は開発中のものです。 mailto:sage [04/07/17 17:20 ID:B5TJNueI]
荒れるから終わってる話を蒸し返すなよ…

266 名前:名前は開発中のものです。 mailto:sage [04/07/17 18:00 ID:+9dzbshW]
じゃあ話題を変えてみよう。

DWORD dwExecuteBufferSize;
D3DEXECUTEBUFFERDESC D3DExecuteBufferDesc;
ZeroMemory(&D3DExecuteBufferDesc, sizeof(D3DExecuteBufferDesc));
D3DExecuteBufferDesc.dwSize = sizeof(D3DExecuteBufferDesc);
D3DExecuteBufferDesc.dwFlags = D3DDEB_BUFSIZE;
D3DExecuteBufferDesc.dwBufferSize = dwExecuteBufferSize;
hRes = m_lpD3DDevice->CreateExecuteBuffer(&D3DExecuteBufferDesc, &m_lpD3DExecuteBuffer, NULL);


267 名前:名前は開発中のものです。 mailto:sage [04/07/18 15:15 ID:KMrdhIqJ]
>>264
V'= V{wM1+(1-w)M2} = wVM1+(1-w)VM2
まだこれがわかんねーやつがいるよw

『数学もできないバカプログラマー達だ。
まあこのスレの住人はほとんどそういう奴らばっかなのは事実だが。』

おまえのことだよプッ>>264




268 名前:名前は開発中のものです。 mailto:sage [04/07/18 15:39 ID:wMON88Q+]
>>266
そんな話題に変えてもなつかしすぎて誰もついてきてこれないぞ

269 名前:名前は開発中のものです。 mailto:sage [04/07/18 20:13 ID:XV/x4++F]
むしろ、どう反応すればいいのか迷うが。
実行バッファを作って終わりなんだもの。

270 名前:名前は開発中のものです。 [04/07/19 08:58 ID:48ZX7Scm]
荒んでるとこすまんがDirectInput7で教えてくれ('A`)
今作ってるゲームを二人プレイ用に改造してるとこなんだが、2つ目以降の
Joystickデバイス取得の具合がどうもよろしくないのよ・・・

LPDIRECTINPUT7 pDI = NULL;
LPDIRECTINPUTDEVICE7 pDIdev1 = NULL;
LPDIRECTINPUTDEVICE7 pDIdev2 = NULL;

BOOL CALLBACK GetJoystickCallback(LPDIDEVICEINSTANCE lpddi,LPVOID *pvRef)
{
HRESULT hResult;
hResult = pDI->CreateDeviceEx(lpddi->guidInstance, IID_IDirectInputDevice7,(void**)pvRef, NULL);
if(hResult == DI_OK)returnDIENUM_CONTINUE;
returnDIENUM_STOP;
}
こういう列挙コールバックを書いて・・・
(省略)
hResult1 = pDI->EnumDevices(DIDEVTYPE_JOYSTICK,(LPDIENUMDEVICESCALLBACK)GetJoystickCallback,&pDIdev1,DIEDFL_ATTACHEDONLY);
hResult2 = pDI->EnumDevices(DIDEVTYPE_JOYSTICK,(LPDIENUMDEVICESCALLBACK)GetJoystickCallback,&pDIdev2,DIEDFL_ATTACHEDONLY);

こんな感じでデバイスを取得しようとすると、PCにジョイスティックが1つしか繋がってない時でも
2回目のEnumDevicesがDI_OKを返しちゃうのよね(ちゃんと失敗を返してくれない)
ちなみにPCからジョイスティックを抜いて実行するとちゃんと1つ目から取得に失敗する。
何故か1つでも繋がってると2回目のEnumDevicesまで成功してしまうという・・・

いろんなサンプル見たけど1つ目を認識させるとこ止まりで参考にならんかった
漏れのコードが間違ってるのは明白なんだが解決方法がワカラン
ジョイスティックが1つの時に2回目以降がDI_OKを返さなくする正しいやり方を教えて下され

271 名前:名前は開発中のものです。 mailto:sage [04/07/19 10:21 ID:54Q4/4D7]
>>270
EnumDevicesは1回だけ呼ぶんだよ。
それでGetJoystickCallbackをループさせて、複数のデバイスを取得する。

272 名前:名前は開発中のものです。 mailto:sage [04/07/19 10:22 ID:p5K2URLW]
そら、最初から列挙し直したら同じものを列挙するだろ。
誰かがデバイスのインターフェイスを取得しようが、
別に列挙の条件から外れるわけではないからな。

一回の列挙で一度にやるか、二回回すなら、取得済みのデバイスを無視するとかしないと。

ちなみに俺は、IDirectInputDevice8::GetPropertyでDIPROP_JOYSTICKIDを使って、
使用するデバイスを選べるようにしている。

273 名前:名前は開発中のものです。 mailto:sage [04/07/19 12:38 ID:48ZX7Scm]
うーむ、コールバック関数をよく理解できんな…

コールバック関数内でCreateDeviceExを2回呼んで終わりにすればいいのかな?
ちょっとやってみる

274 名前:名前は開発中のものです。 mailto:sage [04/07/19 12:56 ID:48ZX7Scm]
コールバック内で2回CreateDeviceExやったけど同じだった・・・orz

275 名前:名前は開発中のものです。 mailto:sage [04/07/19 13:06 ID:48ZX7Scm]
思いっきり勘違いしてた
修正したらうまく行ったみたい
因みにこんな感じにしてみますた
BOOL CALLBACK GetJoystickCallback(LPDIDEVICEINSTANCE lpddi,LPVOID *pvRef)
{

HRESULT hResult;
if(pDIdev1 == NULL){
hResult = pDI->CreateDeviceEx(lpddi->guidInstance, IID_IDirectInputDevice7,(void**)&pDIdev1, NULL);
if(hResult == DI_OK)returnDIENUM_CONTINUE;
elsereturnDIENUM_STOP;
}

if(pDIdev2 == NULL){
hResult = pDI->CreateDeviceEx(lpddi->guidInstance, IID_IDirectInputDevice7,(void**)&pDIdev2, NULL);
if(hResult != DI_OK)pDIdev2=NULL;
}
returnDIENUM_STOP;
}
なんか恥ずかしいコードだな・・・


>>271-272
サンクスコ

276 名前:名前は開発中のものです。 mailto:sage [04/07/19 13:27 ID:54Q4/4D7]
>>275
強引だな・・・・・。

277 名前:名前は開発中のものです。 mailto:sage [04/07/19 21:53 ID:FkElpxEK]
確かにしようもないことで荒れるけど、業務系板と比べると『しようもない』のレベルの次元が違う。




278 名前:名前は開発中のものです。 mailto:sage [04/07/19 21:53 ID:FkElpxEK]
確かにしようもないことで荒れるけど、業務系板と比べると『しようもない』のレベルの次元が違う。


279 名前:名前は開発中のものです。 mailto:sage [04/07/20 02:12 ID:TWCqFqg5]
レベルの次元

280 名前:exciteは神 mailto:sage [04/07/21 00:33 ID:NW4Ruyd1]
それは破滅しますが、ので、そこに、さらにある、
オペレーティング・システム・ボードと比較して、
それを確かにする方法、レベルの次元、の
「そこに、さらにある、実行する方法」異なります。

281 名前:名前は開発中のものです。 mailto:sage [04/07/22 22:56 ID:5rJvB900]
Forceware60シリーズリリース。
GeForce6800にDirectX9.0c(WindowsXPSP2RC2)と
Shader3.0環境は整った。

282 名前:名前は開発中のものです。 mailto:sage [04/07/24 19:31 ID:P1GEgvZG]
ぬるぽ

283 名前:名前は開発中のものです。 mailto:sage [04/07/24 19:55 ID:PR5W0fUe]
ポルンガ

284 名前:名前は開発中のものです。 mailto:sage [04/07/24 19:56 ID:NIvgFQBW]
アハーン

285 名前:名前は開発中のものです。 [04/07/24 23:31 ID:fQM+YmNW]
恐らく、それらはTAKOのビットを装備しており、それを焼き、沸騰させて、それが大阪と呼ばれる時、ゆで団子になるでしょう!


286 名前:名前は開発中のものです。 mailto:sage [04/07/25 09:28 ID:aCl1Aoq6]
今制限の多いエフェクトやHLSLでしこしこライブラリ作ってるけど
近い将来その制限も緩和されてゴミとかすんだろうな
なんだかむなし

287 名前:名前は開発中のものです。 [04/07/25 09:44 ID:mxjAoDQK]
ここはひどい日本語でつね




288 名前:ヘルジャック [04/07/25 10:21 ID:ovE6k6xQ]
combatant.hp.infoseek.co.jp/cgi-bin/up/src/up0262.zip

漏れが作ったんだけど ちょっとこれを改良して

289 名前:名前は開発中のものです。 [04/07/25 10:35 ID:rIHwuKxk]
>>288
ヘルジャックさ、
現在のフレームのキャラクタの位置を決定してから
マップの表示範囲を決めるようにしないか?

つまりマップの描画にはキャラクタの座標が必要になるわけだが。






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

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

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