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


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

【C++】 DirectX初心者質問スレ Part12 【C】
251 名前:デフォルトの名無しさん :2007/04/09(月) 00:00:46
ヨ→Eだけだと
ヨ→m→Eなのか
ヨ→ | →Eなのかわからん

252 名前:デフォルトの名無しさん :2007/04/09(月) 00:30:18
>>251
それを知って何か意味があるの?

253 名前:デフォルトの名無しさん :2007/04/09(月) 00:38:15
話の流れくらい嫁

254 名前:デフォルトの名無しさん :2007/04/09(月) 04:09:03
>>251
180度回転は反転(=invert=裏返し)とは言わないだろ

255 名前:デフォルトの名無しさん :2007/04/09(月) 07:53:04
>>254
質問者が180度回転のつもりで反転という言葉を使う可能性は十分にあると思うぞ。

256 名前:デフォルトの名無しさん :2007/04/10(火) 01:47:16
軸で回転語れよ

257 名前:デフォルトの名無しさん :2007/04/10(火) 01:54:16
ヨ→m→Eもヨ→ | →Eも180度回転だろ
2次元脳はすっこんでろ

258 名前:デフォルトの名無しさん :2007/04/10(火) 02:01:08
>>257
スレも読めんのか低脳

259 名前:デフォルトの名無しさん :2007/04/10(火) 02:48:56
スレとレスの区別ついてる?

260 名前:デフォルトの名無しさん :2007/04/10(火) 05:48:38
流れぶった切って悪いが質問。

3Dのレンダリングの際には
ワールド変換→ビュー変換→プロジェクション変換
がこの順番で行われるって書いてある本があるんだけど、
これは別にSetTransform()でセットする順番を
このとおりにしなきゃダメだって言ってるわけじゃないよね?

261 名前:デフォルトの名無しさん :2007/04/10(火) 06:44:14
そうだよ。

262 名前:デフォルトの名無しさん :2007/04/10(火) 11:33:34
>>260
変換が適用される順番だから、SetTransformの順番は関係ない。
行列の積はABとBAが等しくないので、計算する順番はとても重要。

実際の計算では3つの変換を順番にするのではなく、1つの行列に
まとめて1回の計算で済ますことが可能。
この、変換を合成できるという性質が、座標変換に行列が使われる理由。
行列で表現できる変換なら、どんなに複雑でも1つの行列に合成できる。

263 名前:デフォルトの名無しさん :2007/04/15(日) 18:04:47
Direct3Dで誘導ミサイルを作りたいのですが、うまくいきません。
今やっている方法は
・目標点の位置ベクトルから、ミサイルの位置ベクトルを引いて、
ミサイルから目標点への方向ベクトルを作る。
・(0,0,1)のベクトルを作り、方向ベクトルとの外積をVec1とする。
・(0,0,1)と方向ベクトルの内積と、アークコサインから、
二つのベクトルのなす角θを求める。
・Vec1を回転軸として、ミサイルをθだけ回転させる。
 この方法だと、絶対座標で-Zの方向へ進むとき、変になる。
その辺の解決方法を教えてください。

264 名前:デフォルトの名無しさん :2007/04/15(日) 19:10:19
その前にどういう仕様にしたいかだが・・・

265 名前:デフォルトの名無しさん :2007/04/15(日) 19:14:35
ちなみにホーミングミサイルがやりたいなら
右か左かを外積で求めて進行方向のベクトルを一定角度だけ回転させるだけだよ

266 名前:デフォルトの名無しさん :2007/04/15(日) 19:18:40
いわゆる板野サーカスで、いきなり目標位置に向かうのではなく、
適度にいい加減にあちこち乱れ飛んで見せてから100%命中させたいのですが


267 名前:263 :2007/04/15(日) 19:26:08
欲しい動作
・ミサイル自体を目標点の方向へ向ける。
今ある情報
・目標点の座標
・ミサイルの座標
・ミサイルの状態行列
です。
>>265
「右か左か」というのはなんですか?

268 名前:263 :2007/04/15(日) 19:28:37
具体的に進む方向ベクトルはありません。
つねに、ローカル座標のZ方向に進むという仕様にしています。
なので、目標点へミサイル自身が向けばいい、というわけです。

269 名前:デフォルトの名無しさん :2007/04/15(日) 19:41:03
目標位置をミサイルのローカル空間に変換してから、そっちに向ければ?

270 名前:263 :2007/04/15(日) 19:48:41
申し遅れました。完全な3Dでやってます。
スターフォックス64のオールレンジモードの状態です。
絶対座標の(0,0,0)から、+X、−X,+Y,+Z,-Z方向に軸を伸ばしています。
-Y方向には伸ばしていません。

271 名前:263 :2007/04/15(日) 19:50:12
>>269さんの仰る方法はどうすればよろしいですか?
ベクトルをワールド空間→ローカル空間への変換方法ですよね。

272 名前:デフォルトの名無しさん :2007/04/15(日) 20:07:21
それだったらオイラー?のAIの本でも読んだら?結構載ってる本あるんじゃね?gameprogramminggemsとか

273 名前:デフォルトの名無しさん :2007/04/15(日) 20:43:58
レスを読まずにレスをするけど
例えば、目的の角度にする為に30度回転しなきゃならないとするだろォー
そこをあえて5度ぐらいにするんだよォーそうすりゃ徐々に目的地に向かうだろォー
んでそういう場合はククォータニョンを使うんだよォォーわかったかカスが

274 名前:デフォルトの名無しさん :2007/04/15(日) 20:54:07
>>267
右か左かってのは自機の進行方向に対して
敵が自機からみて右にいるか左にいるかってこと

それとお前のいってることおかしくね?
常にローカルのZ方向なんて仕様にはどうしたってならんでしょ?
別のゲームを実際に画面でそうみえる通りに作ってないか
どう作ってるのかしらんが内部ではちゃんと3Dの世界は構築できてるのか?

275 名前:デフォルトの名無しさん :2007/04/16(月) 00:22:43
>>267
現在の姿勢(A)から、目的の姿勢(B)への変換は M = invA・B だけど
ミサイルの上向きベクトル(ひねり)を"成り行き"で決めるんだとしたら、
Bは直接求められないから、AからBへの相対的な回転を求める必要があるわね。
回転は円弧 v1,v2 から求めるとして
v1 は、 現在の姿勢(A)の前向きベクトル、ニュートラルが(0,0,1)だとしたら
D3DXVec3TransformNormal(&v1, &D3DXVECTOR3(0,0,1), &A); で
v2 は、 (目標点)-(ミサイル点)ね
あとは、外積と内積で軸と回転角を求めて(ry ね。
角度を徐々に変化するなら回転量にリミッタをつけるわけね。

276 名前:デフォルトの名無しさん :2007/04/16(月) 01:16:07
内積いる?
角度なんてもっときゃいいじゃん
左右を判断するのに外積
進行方向を決定するのに現在の角度+回転したい角度
で内積どこに使うの?

277 名前:デフォルトの名無しさん :2007/04/16(月) 01:28:22
"残りの角度"ね。1フレームの角度変化量がそれより大きい場合は
クランプしないといけないわね。

278 名前:デフォルトの名無しさん :2007/04/16(月) 01:33:26
意味わからん
何、残りって?
内積って光の計算とボールの反射角ぐらいしか使った覚えない

279 名前:デフォルトの名無しさん :2007/04/16(月) 01:35:59
ああ、書いた瞬間わかった
いらんて
目でわからんほど小さい角度やんけ

280 名前:デフォルトの名無しさん :2007/04/16(月) 01:47:20
要は必要な回転角度が3で、角速度が5の場合に、+5>-5>+5>-5..って感じで
ブルブル震えるのを、許容するかどうかの問題ね。


281 名前:263 :2007/04/16(月) 02:02:57
>>275さんの方法をやってみました。
相当綺麗に誘導することができました。
ありがとうございます。
私の場合は、ミサイルの方向ベクトルと目標点への方向ベクトルの内積で
出た角度に制限(1フレームで30度以内)を付けました。
これならばミサイルがぶるぶる震えたりはしません。
ですが、この方法でも、目標点への方向ベクトルのz要素が負
(例えば、ミサイル絶対座標が(10,10,10)で
目標点の絶対座標が(5,1,5)の時のように方向ベクトルが(-5,1,-5)のとき)
などでは、ミサイルがあらん方向へと飛んでいきます。同高度の時でも、
50単位ぐらい離れていたら、誘導されるのですが、それ以上離れると、
いきなり完全な逆方向へ飛んでいきます。これはなぜなのでしょうか。

282 名前:デフォルトの名無しさん :2007/04/16(月) 03:02:12
>>281
多分計算間違いか(ベクトルの正規化し忘れとか)、外積の計算失敗とかだと思うけど。
(ちなみに(-5,1,-5)は(-5,-9,-5)の間違い?)
v1とv2が、ほぼ同じ向きの場合とか、正反対の場合、(|dot|>1.0-ε)
外積がうまく求まらなかったりするから、場合分けが要るわね。
(正反対の場合はY軸180度回転で決め打ちとか)

283 名前:デフォルトの名無しさん :2007/04/16(月) 07:16:32
内積いらんでも綺麗にいくと思うけどなぁ
内積は使うと色々面倒なんだぜ
場合分けあって
まあ、ポイントは外積の左右判断だけだと思うけどね

284 名前:デフォルトの名無しさん :2007/04/16(月) 07:23:43
外積の計算なんてミスるの?
0>X1Y2-X2Y1
のどこにミスる要素が・・・

285 名前:デフォルトの名無しさん :2007/04/16(月) 08:41:34
>>284の脳は二次元

286 名前:デフォルトの名無しさん :2007/04/16(月) 20:01:02
ちょっと役に立つネタの流れになると、こういうのが出てくるな…

287 名前:263 :2007/04/17(火) 00:44:59
完成しました。
なぜ変な方向へ行ってしまうかというのは、外積から求めた回転軸に問題がありました。
ほぼ同じ向きになったベクトルの外積はゼロベクトルに限りなく近くなります。
なので、軸ベクトルの長さが1以下の時には回転をしない、
という風にしたら何の問題もなく動きました。

みなさん、本当にありがとうございました。

288 名前:デフォルトの名無しさん :2007/04/17(火) 05:52:46
>>282場合分けってどんなヤツ?

289 名前:デフォルトの名無しさん :2007/04/17(火) 07:04:27
>>287
なにとんちんかんなこといってるの
外積で出したベクトルなんて使わないよ

290 名前:デフォルトの名無しさん :2007/04/17(火) 07:25:15
外積と内積を利用して軸と回転角を求めるって話なのに、
>外積で出したベクトルなんて使わないよ
ってどういうことよ?
まさか、外積がそのまま軸になるとか思っちゃってるわけ?

291 名前:デフォルトの名無しさん :2007/04/17(火) 08:38:04
はぁ?
アプローチ悪すぎ
アフォ過ぎ


292 名前:デフォルトの名無しさん :2007/04/17(火) 08:58:29
もうわかったから消えてくれ

293 名前:デフォルトの名無しさん :2007/04/17(火) 14:13:54
アプローチが悪いといいつつ
良いアプローチを提示できない時点で終わってる

294 名前:デフォルトの名無しさん :2007/04/17(火) 19:31:38
は?
さんざん言ってんのにお前が馬鹿だから略

295 名前:デフォルトの名無しさん :2007/04/17(火) 20:12:06
進行方向と上ベクトルで外積
傾けたい上ベクトルを指定
これとさっきだしたベクトルで外積
これらを行列に突っ込んで姿勢行列完成
どっから見てもレーザーに見える板ポリなんかもこんな感じ

296 名前:デフォルトの名無しさん :2007/04/17(火) 20:37:28
その方法だと外積もう一回いるな
進行方向のがでてない

297 名前:デフォルトの名無しさん :2007/04/18(水) 00:55:13
3Dシューティングゲームのソースコードを公開してくださっているWebサイトなど
ご存知でしたら教えてください。よろしくお願いします。

298 名前:デフォルトの名無しさん :2007/04/18(水) 04:25:38
http://www.rocketcommander.com/

299 名前:デフォルトの名無しさん :2007/04/19(木) 17:43:58
>>298
ありがとうございます。参考にさせて頂きます。

300 名前:デフォルトの名無しさん :2007/04/20(金) 01:54:38
すいません、DirectMusic でわからない所があります。

PlaySegmentEx でWavデータを再生しているのですが、ループ再生の挙動が
おかしいのです。SetLoopPoints(0,0) のSetRepeats(DMUS_SEG_REPEAT_INFINITE)で
指定しているですが、2回目のループから、何故か10秒ほど間があきます。
(1回目のループは問題なしです)
状況的には、
(1)250個ほどのwavファイルを読み込んでセグメントを作っている。
(2)うまくループし続けるセグメントもあれば、2回目から間の開くセグメントもある。
(3)空きメモリは2G程度ある。

こんな状況です…。色々試してみましたが、どうしても間が…。
よろしくお願いします。


301 名前:デフォルトの名無しさん :2007/04/20(金) 08:59:57
質問です。FujitsuのLifeBookを購入したのですが、
DirectX9の3Dのサンプルを起動すると...very hardの様な警告が表示され
処理が大変遅くなります。
最新のノートだと聞いたのですが、一方最近のVAIOのノートで起動すると
一目瞭然で段違いにスムースに動きます。
グラボの性能が違うのでしょうか?
教えてください。お願いします。

302 名前:301 :2007/04/20(金) 09:26:47
小出しすみません。
グラフィックボードは
名前:Mobile Intel(R) 945GM Express Chipset Family
チップの種類:Intel(R) Calistoga Graphics Controller
メモリ合計:128.0MB

WindowsXP
FMVシリーズ
Intel(R) Celeron(R) M CPU
410 @ 1.46GHz
1.46GHz、504MB RAM
物理アドレス拡張

という感じです。すみません。

303 名前:デフォルトの名無しさん :2007/04/20(金) 10:30:05
オンボードGPUで3Dやるのはやめて下さい

304 名前:デフォルトの名無しさん :2007/04/20(金) 10:35:57
小出しすんなの意味で言うなら、エラーメッセージも省略すんな、と。

ハードウェアに無い機能を使ったサンプルの場合、Direct3Dがリファレンスラスタイライザという
すべてをソフトウェアで処理するモードに切り替わるから超遅くなんのよ。

VGAの性能不足とゆーより機能不足が原因です。

305 名前:301 :2007/04/20(金) 17:47:28
>>303-304
ありがとうございます。
オンボードGPUって何ですか。つなげて言われると分かりません。

確かにラスタライザとかエラー表記がありました。すみません。
参考書はI/O BOOKSのDirectX9 DirectX Graphics
という本なんですが、
その機能を使わなければどうしようもないですよね?
分解でもしないと、どうしようもないんですか?

306 名前:デフォルトの名無しさん :2007/04/20(金) 18:07:58
デバイスのcapsを取得して、そのサンプルで使用している機能があるかどうかは確認したのか?
最低限トレースしてどこの分岐でメッセージを出力しているくらいはやっているんだろうな?

307 名前:301 :2007/04/20(金) 18:42:32
>>306
ttp://www.uploda.org/uporg781097.txt
> if( NULL == pOldDeviceSettings &&
> pNewDeviceSettings->DeviceType == D3DDEVTYPE_REF &&
> !GetDXUTState().GetOverrideForceREF() )
> {
> DXUTDisplayErrorMessage( DXUTERR_SWITCHEDTOREF );
> }
おそらくこの辺りだと思いますが、解読できませんでした。すみません。
デバイスキャプスで探る方法も分からない屑ですが。

308 名前:デフォルトの名無しさん :2007/04/20(金) 18:58:55
いったい何をしたいのだろう?
サンプルを並の速度で動かしたいだけなのか?
DirectXを勉強したいのなら、初期化から始めれば自然と理解できるように
なると思うのだが。

309 名前:デフォルトの名無しさん :2007/04/20(金) 19:49:03
>>307
そのGPUにはそういう機能がない
だから遅くなる
分解だの改造だのやってもダメ
諦めて

310 名前:デフォルトの名無しさん :2007/04/20(金) 20:00:03
ノートで動くように作るなら最近のサンプルはきついね。
DirectX8のサンプルを見て、その範囲でやる方がいいな。
その辺のネトゲとかはそんなレベルだし。


311 名前:301 :2007/04/20(金) 20:51:20
分かりました。参考書を見直します。
お騒がせしてすみませんでした。
ありがとうございます。

312 名前:デフォルトの名無しさん :2007/04/21(土) 02:02:04
D3DXIntersectで使うメッシュ情報を読み込みたいのですが、アニメーション用にスキンドメッシュを読んでしまっているので、
どうやってIntersect用のメッシュを読み込めば良いかわかりません。

アニメーション用ではなかったとき、D3DXLoadMeshFromX()を使ってメッシュ情報を扱えたのですが、
今はD3DXLoadMeshHierarchyFromXを使っていて、判定用のメッシュが扱えません。

どなたかご存知の方、おられましたら、宜しくお願いします。

313 名前:デフォルトの名無しさん :2007/04/21(土) 17:55:36
お聞きしたい事があるのですが、DirectXの書籍に
「DirectX逆引き大全500の極意」という本があると思うのですが、
この本はどうなのでしょうか?
サイトにある目次を見た所、自分のやりたい事があったのですが、
プログラム&解説は詳しく載っているのでしょうか?
板違いならすいません。
よろしく御願いします。

314 名前:デフォルトの名無しさん :2007/04/21(土) 18:15:30
俺はエスパーではないので誰か頼む

315 名前:デフォルトの名無しさん :2007/04/21(土) 18:40:10
こんなの本をもってるヤツでも答えられない

316 名前:デフォルトの名無しさん :2007/04/21(土) 19:49:24
.Net DX2007Feb
DirectInputを使いたいのですがコンパイルが通りません。
[dinput.h]はインクルードし、[dxguid.lib][dinput8.lib]はリンクしています。
書籍や説明をしているサイトの通り打っても[DirectInput8Create]が使えないと言われます。
何か別の関数に置き換わったのでしょうか?

317 名前:デフォルトの名無しさん :2007/04/21(土) 20:03:21
俺はエスパーではないので誰か頼む

318 名前:デフォルトの名無しさん :2007/04/21(土) 20:23:28
じゃあ、エスパー魔美好きの俺が答えてやろう。

「コンパイルが通らない」だけで分かるかよ!

319 名前:デフォルトの名無しさん :2007/04/21(土) 20:27:24
コンパイルは通らないはず
なんだっけ?ライブラリか何かのファイルが9.0cからなくなっているんだよな
そこら辺詳しい人いないかね

320 名前:デフォルトの名無しさん :2007/04/21(土) 20:48:42
>>316
今までのSDKを適当に入れたら通る。
この解決方法でいいのか知らんが。

321 名前:デフォルトの名無しさん :2007/04/21(土) 20:52:15
#define DIRECTINPUT_VERSION 0x0800

322 名前:デフォルトの名無しさん :2007/04/21(土) 21:05:26
#pragma comment(lib, "dinput8.lib")

を、DirectInput8Createを使ってるcppファイルの先頭付近に
追加してみろ。変わらずなら他のcppに次々追加していく。
stdax.cppだけじゃ駄目だ。
多分これでリンクが通るはずだ。理由はしらね。

323 名前:デフォルトの名無しさん :2007/04/21(土) 22:50:12
>316
エラーメッセージ自体を貼り付けてみよう。

324 名前:デフォルトの名無しさん :2007/04/21(土) 23:08:55
>>322は的外れ

325 名前:デフォルトの名無しさん :2007/04/22(日) 00:18:36
>>313
局所サンプルで書かれてるので素人にはまったくオススメできません
DirextXのサンプルからいじってなんか作たぐらいの’まとめる’スキルが要ると思われる

326 名前:316 :2007/04/22(日) 08:16:22
返信ありがとうございました。
2005Febを入れるかマクロを追記させるかのどちらかで解決するのを確認いたしました。
新しいSDKでDirectInputを使う場合、後者のほうがいいのでしょうか。

327 名前:デフォルトの名無しさん :2007/04/23(月) 21:17:08
似たような質問が出ていたので便乗させて頂きます。
>>316さんと同じところのDirectInput8Createで引数に使っているIID_IDirectInput8が使用できない状態です。
error LNK2001: 外部シンボル "_IID_IDirectInput8A" は未解決です

#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#pragma comment( lib , "dxguid.lib" )
#pragma comment( lib , "dinput8.lib" )
これらをwindows.hなどのインクルード直後に書いています。
ちなみにIID_IDirectInput8を宣言している場所に移動は出来ます。
何が原因でのエラーなのでしょうか。


328 名前:デフォルトの名無しさん :2007/04/23(月) 22:05:49
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLJ_jaJP176JP176&q=LNK2001+%5fIID%5fIDirectInput8A

329 名前:デフォルトの名無しさん :2007/04/26(木) 23:39:44
質問させてください。
現在、矢印キーでキャラクターをx,z軸方向へ移動させれるとこまでできておりまして、
今度はこのキャラクターに、Xファイルから読込んだ起伏のある地形の上を歩かせたいの
ですが、どのようにプログラムすれば実現できるのか分らなく苦戦しております。

実現方法や参考になるサイトなどをご存知の方がいましたらご教授ください。
よろしくお願いします。

330 名前:デフォルトの名無しさん :2007/04/27(金) 00:25:57
>>329
たくさん方法があるけど代表的で汎用性があるのを2つ
どっちがいいかでなくて、用途に応じて使いわけると開発が楽になる

1つ目は足元に見えない三角形(足場用当り判定ポリゴン)をデザイナさんにおいておいてもらって
1つ1つの三角形を片っ端から判定する(もちろん全部判定すると処理時間が半端でないのでオクツリーとか検索して幸せになる)

2つ目は2Dのマップ的な判定方法
とりあえず正方形のタイルが敷き詰められた床を想像する
真上からみると碁盤の目みたいになる
ここまでは2Dのマップチップと同じだ

横線と縦線が直行してる点を頂点として、その頂点の1つ1つに高さ情報をもたせる
とりあえずこれで山が表現できる
判定は2Dと同じようにどの四角形にキャラが乗っているか?を求めて高さの計算は
四角形の対角線で三角形2つに分ける上と下の2つの三角形に別れる
どの格子にいるかはわかっているので対角線の直線の方程式を使って上の三角形にいるか
下の三角形にいるか判断する
そしたら、平面の方程式(わからなかったらググレw)を使って高さを求める


331 名前:デフォルトの名無しさん :2007/04/27(金) 10:36:31
>>330さん
ご教授ありがとうございます。僕の頭ではこの問題は壁ですね…
どう解決したかを報告できるのはもうちょっと先になりそうです。
せっかく教えて頂いたのに申し訳ありません orz

332 名前:デフォルトの名無しさん :2007/04/27(金) 10:42:41
こんなに噛み砕いて説明してるのに分らないんなら何見たって無駄。

333 名前:デフォルトの名無しさん :2007/04/27(金) 11:03:34
リアル中学生かも知れないから
高校の教科書読んでみろとか
もうちょっと具体的な指示を
出してあげてもいいかも知れない

334 名前:デフォルトの名無しさん :2007/04/27(金) 11:30:10
中学生がこんな時間帯に2chに居る訳ないでしょ。
ニートか大学生だろ。


335 名前:デフォルトの名無しさん :2007/04/27(金) 11:34:29
そう言うお前は…( ´,_ゝ`)

336 名前:デフォルトの名無しさん :2007/04/27(金) 20:23:31
DXライブラリを使用してゲームを作ってみようと思っているのですが、
このライブラリって実際どのぐらい普及しているんでしょうか

337 名前:デフォルトの名無しさん :2007/04/27(金) 20:57:31
1%以下とだけ言っておく

338 名前:デフォルトの名無しさん :2007/04/27(金) 21:08:26
>>337
どうも。思ってたより少ないです

339 名前:デフォルトの名無しさん :2007/04/27(金) 22:12:13
>>338
アホかw

340 名前:デフォルトの名無しさん :2007/04/28(土) 00:38:11
ライブラリの普及率なんてどうでもいいことだと思うが。

341 名前:デフォルトの名無しさん :2007/04/28(土) 00:56:06
孤独を癒してはいけないんですか

342 名前:デフォルトの名無しさん :2007/04/28(土) 01:06:49
ある程度自分が使って馴染んできたライブラリが実は利用者ごく僅かな
劣化ライブラリでしたーってことになったら困る

343 名前:デフォルトの名無しさん :2007/04/28(土) 01:20:49
でも、ネットでRPGツクール未満のゲームとか、
ダメプログラマがゲー専の卒業制作で使うとか
マイコンBASICマガジンの投稿作品に勝てないようなゲームしかないじゃない。

344 名前:デフォルトの名無しさん :2007/04/28(土) 01:39:15
>>343は何に対してレスしてるのか理解できない

345 名前:デフォルトの名無しさん :2007/04/28(土) 02:11:52
私は●●のライブラリで作りましたって言って
キラーアプリを作ってしまえばもうウハウハです

346 名前:デフォルトの名無しさん :2007/04/28(土) 10:56:48
>>343
STARGAZERは実装としてはよくやったとおもう。
(デザインは既存ゲームのエッセンスをぱくりまくっただけだが、プログラム的にはそれは問題ではない)
BGMがらみで別ライブラリ使ってるから、ソースもいじってるのかもしれないが。
ライブラリを生かすも殺すも実力しだいか

347 名前:デフォルトの名無しさん :2007/04/28(土) 12:50:20
330カワイソス

348 名前:デフォルトの名無しさん :2007/04/28(土) 12:55:51
>>342
意味分からん。どの道、ライブラリなんて言っても
元々DirectXのラッパー程度なんだしそれのどこに劣化で問題がある?
むしろ、重要なのは権利回りで実用時に問題が無いか?とか
開発やサポートが止まってて予期せぬ中断を強いられないか?じゃないか?



349 名前:デフォルトの名無しさん :2007/04/28(土) 14:12:13
>>342それで困るってことはないだろ。

350 名前:デフォルトの名無しさん :2007/04/28(土) 22:17:41
俺らは額を泥に埋めてまでも
ライブラリの名声を借りなければ世の中を渡っていけない。
キャリア組の連中は現場のことなんて分かりやしないんだ!


351 名前:デフォルトの名無しさん :2007/04/29(日) 07:45:51
人数だけ見たら海外ものが多いに決まってるがwwwwwwコミュニティーが活発とか将来性、ライセンスじゃね?

352 名前:デフォルトの名無しさん :2007/04/30(月) 00:29:22
例えばBackBufferCountの値を大きくするとフレームごとの処理の重さを平坦化して滑らかに動かす事に活用できるのでしょうか?
操作が遅延するのでゲームには使えないがデモに使えるのではないかと目論んでいます。

353 名前:デフォルトの名無しさん :2007/04/30(月) 01:19:22
ファイルパッキングしたものから
画像ファイルからテクスチャを作るときどうしていますでしょうか?

パッキングされたものから画像を保存
それを読み込みしかないのでしょうか?

354 名前:デフォルトの名無しさん :2007/04/30(月) 01:28:02
D3DXCreateTextureFromFileInMemory

355 名前:デフォルトの名無しさん :2007/04/30(月) 01:59:25
>>352
自分のアプリで計測して比べてみ。一箇所の違いだから簡単だろ。
なんか結果でたら報告してくれよ

356 名前:デフォルトの名無しさん :2007/04/30(月) 05:25:20
>>352
そんなあらかじめ計算できるもんなら最初からデータにしとけよw
折角ゴイスーなデモやるなら操作できないと意味ない希ガス
見せるだけならムービーでいいじゃん
なんか3DMarkなんとか思い出したw
いま、全く聞かないけどどうなったんだろ?w

357 名前:デフォルトの名無しさん :2007/04/30(月) 16:31:10
ライブラリ使ってとりあえず完成させて、一通りの処理の流れを掴んでから
ライブラリなしで作り始めるってのはありかな?

358 名前:デフォルトの名無しさん :2007/04/30(月) 17:06:00
>>357
そんなことできるもんか
下地をとっかえるなんてことは理論上簡単そうに見えても
実際には根が張るから不可能だ。
作り直したほうが速い典型だな

359 名前:デフォルトの名無しさん :2007/04/30(月) 17:57:23
>>356
3DMark2007出るよ

360 名前:デフォルトの名無しさん :2007/04/30(月) 17:58:50
>>357
最初からライブラリを自分なりのラッパークラスでつつんで開発すれば
あとで実装を書き換えるだけになるからなんとかなるかも

最初からライブラリ使うな?それはごもっともw

361 名前:デフォルトの名無しさん :2007/04/30(月) 18:49:06
>>359
3DMark2000,2001,03はタダだったから実行してみたな
驚いたのは2000ぐらいで後はフーンって感じだったw
こんときはセンスもよかったしね
3DMark05,06,07なんて俺のRadeon9600proで動かないだろうなw
っていうかまだタダでDownloadできるんだろうか?w

362 名前:デフォルトの名無しさん :2007/04/30(月) 18:53:36
3DMark05は動くっぽいな
でも06はむしろCPUがデュアルコアでメモリがたくさんないと駄目ってか?
いまってそういう時代なわけ?
完全に過去の人になったな俺w

363 名前:デフォルトの名無しさん :2007/04/30(月) 19:11:20
今はもうグラボもデュアルじゃないと

364 名前:デフォルトの名無しさん :2007/04/30(月) 19:18:17
3DMark05のデモみたけどセンスワリィなぁ
この銃撃戦バキュバキュって奴どんなに派手に作ったってよくみえねぇって
03のときも似たようなことやってなかったか?
技術的にいいところあっても真似してやろうと思わんよ

06はなんかドラゴン出てきてよさげっぽいからちょっと期待してみたりw

365 名前:デフォルトの名無しさん :2007/04/30(月) 23:49:47
3DMark06見て見た
3DMark05と同じデモで終わり・・・ケチー!
終了ー!w
バッカじゃねぇのw
グラボももうネタねぇんだろw

366 名前:デフォルトの名無しさん :2007/05/01(火) 00:06:43
>>358,>>360
ok、気合入れてライブラリなしで作ってみるよ
まあまずはC++の勉強からだが…

367 名前:デフォルトの名無しさん :2007/05/01(火) 09:35:27
C++どころかstdioとかも作らないとライブラリを使用してることになるんじゃね?

368 名前:デフォルトの名無しさん :2007/05/01(火) 09:44:06
標準ライブラリは使っておk

369 名前:デフォルトの名無しさん :2007/05/01(火) 12:30:56
標準ライブラリが無い環境のほうが特殊だ品

370 名前:デフォルトの名無しさん :2007/05/01(火) 13:59:57
>>369
WindowsCEとかSDKによってはなかった希ガス(標準関数の方だったかな?)
後、組み込みとかだと標準ライブラリはほとんど使えなくて
標準関数とかも使えるもんと使えないもんとある環境があった希ガス

まあ、ゲームとは縁の無い話だがw

371 名前:デフォルトの名無しさん :2007/05/01(火) 14:16:25
だからそういう環境が特殊ということでしょ。

372 名前:デフォルトの名無しさん :2007/05/03(木) 01:04:57
DirectX9.0のDLは無料なんですか?

373 名前:デフォルトの名無しさん :2007/05/03(木) 01:11:40
>>372
はい、そうです。

374 名前:デフォルトの名無しさん :2007/05/03(木) 01:17:02
>>373
ありがとうございます!
早速DLします。

375 名前:デフォルトの名無しさん :2007/05/03(木) 01:33:44
後払いだからそのうちMSから請求が来るぞ。

376 名前:デフォルトの名無しさん :2007/05/03(木) 02:50:29
わかったから寝ろ

377 名前:デフォルトの名無しさん :2007/05/03(木) 21:28:29
タダじゃない、きちんと金は払っているだろ。
だからこそ開発できるのに、根本的なところを理解していないと、すぐに無料とか安易な答えが返ってくる。

困ったものだ。

378 名前:デフォルトの名無しさん :2007/05/04(金) 02:08:05
アカデミック版ってお得すぎないか?
何か致命的なとこがありそうで怖い

379 名前:デフォルトの名無しさん :2007/05/04(金) 03:37:30
>>377
わかったから消えろ

380 名前:デフォルトの名無しさん :2007/05/04(金) 09:02:29
>>378
安いのにはそれなりの理由があるんだよ。

381 名前:デフォルトの名無しさん :2007/05/04(金) 11:11:33
>>378
大丈夫。
つか、基本的にアカデミック版を買う奴らの方が、
長い目で見れば金を落としてくれるから、安くしてあるだけのこと。

(極端な話、プログラミングなんて始めるのにも学習時間が必要だし、
 時間があまって、それなりに気力のある人間に多少安く売っておいても、
 その後の20年30年で十分Payできるだけの投資価値があるって事。)

382 名前:デフォルトの名無しさん :2007/05/04(金) 12:59:02
趣味でやってる俺には将来全くpayの見込みはないな
ゲイツごめんね^^

383 名前:デフォルトの名無しさん :2007/05/04(金) 15:27:27
>>381
逆だよ。本当はアカデミック版価格でも十分は利益はだせるんだが、
絞れるヤツからは絞れるだけ絞りとってるだけ。これビジネスの常識。

384 名前:デフォルトの名無しさん :2007/05/04(金) 15:56:35
質問!!


ところで、C/C++で何作ってるんですか??

385 名前:デフォルトの名無しさん :2007/05/04(金) 16:07:59
コンパイルされたバイナリに決まってるだろ。

386 名前:デフォルトの名無しさん :2007/05/04(金) 16:23:08
それどんなバイナリ?

387 名前:デフォルトの名無しさん :2007/05/04(金) 16:27:01
それを教えるのはやばいナリ

388 名前:デフォルトの名無しさん :2007/05/04(金) 17:20:03
>>387
すごい
なんかうまく決まった感じだ

389 名前:デフォルトの名無しさん :2007/05/04(金) 17:25:26
ここにきてもC/C++でアプリ作ってるやつなんかいないよ
みんな教科書の知識だけでしゃべってるんだから!

390 名前:デフォルトの名無しさん :2007/05/04(金) 17:38:03
そもそも教科書なんて存在しない。

391 名前:デフォルトの名無しさん :2007/05/04(金) 17:51:36
そうだな教科書はSE試験のテキストくらいだな
教科書よりも書籍類の知識ってことで

392 名前:デフォルトの名無しさん :2007/05/04(金) 18:33:18
最近はWEB上の情報だけで何とでもなるから、書籍なんて全然買ってないな。

393 名前:デフォルトの名無しさん :2007/05/04(金) 18:45:34
>最近はWEB上の情報だけで何とでもなるから、書籍なんて全然買ってないな。
てか、一時期のシェーダバブルが終わってから勉強してないだろ?

394 名前:デフォルトの名無しさん :2007/05/04(金) 19:46:10
Xファイルから頂点座標、x,y,z成分をそれぞれ抽出する方法を教えてください。
よろしくお願いします。

395 名前:デフォルトの名無しさん :2007/05/04(金) 19:49:27
普通にメッシュの中にそのまんまのデータが入ってるだろ。
教えるも何も見たまんまだ。

396 名前:デフォルトの名無しさん :2007/05/04(金) 20:43:16
>>395
そうではなくて頂点座標とか一部のみ抽出する方法を知りたいと言ってるんですが。
データが入ってるのは知ってますし、Xファイルのロードぐらいできますよ。

397 名前:デフォルトの名無しさん :2007/05/04(金) 20:52:15
データの配置も見たまんまなんだから、とりたいところを好きなように取り出せばいいだろ。

398 名前:デフォルトの名無しさん :2007/05/04(金) 21:06:52
>>395
すみません。それが分っていない奴でして…。
D3DXLoadMeshFromX()関数を使用してXファイルを読込む際に、第8引数に渡すLPD3DXMESH型の変数から
頂点座標を抽出できそうかな?と勝手に当てをつけているのですが…
例えばx成分だけを取り出すにはどうすれば良いのでしょう?

399 名前:デフォルトの名無しさん :2007/05/04(金) 21:14:17
IDirectXFileから読み出した方が、ヘルプに書かれているフォーマット通りなのであっさり出来る。

400 名前:デフォルトの名無しさん :2007/05/04(金) 21:48:09
すみません…第8引数に渡すのはID3DXMesh型でした orz
D3DXLoadMeshFromX関数によって呼び出した場合は成分抽出は難しいということでしょうか?
IDirectXFile、調べてきます。

401 名前:デフォルトの名無しさん :2007/05/04(金) 22:11:01
>>399
>LPD3DXMESH型の変数から頂点座標を抽出できそうかな?
ここまで書いているのに、あくまでパーサー作らせようというのはどうよ?

>>400
君の予想通り、ID3DXMeshへの操作で可能。
ID3DXBaseMesh::LockVertexBufferで頂点配列へのポインタが得られる。
頂点要素のフォーマットはID3DXBaseMesh::GetDeclarationで得られる。
まあこれだけでは情報が足りず、ロックが失敗するなどかもしれんが
そこは頑張ってください。

402 名前:デフォルトの名無しさん :2007/05/04(金) 22:33:46
>>401
具体的な情報とご指示ありがとうございます!
頑張ります。( ゚∀゚)ゞ

403 名前:デフォルトの名無しさん :2007/05/04(金) 22:39:40
>>401
IDirectXFileがパーサーなのにパーサーを作らせようというのは意味不明。

404 名前:デフォルトの名無しさん :2007/05/05(土) 11:38:00
Direct3D 10のReference見てるんだけど、アニメーション関係の機能とか殆どないけど、従来のDirect3D 9のやつを併用しろってこと?

405 名前:デフォルトの名無しさん :2007/05/05(土) 12:18:49
そもそもDirect3D自体にはアニメーション機能など無い。

406 名前:デフォルトの名無しさん :2007/05/05(土) 17:19:06
DirectXでも、windowsの機能でも良いので、使用可能なVRAMの容量を取得する方法は有りますか?
DirectXで、テクスチャに使える容量をゲットできる関数は見つける事が出来ました。
御願いします。

407 名前:デフォルトの名無しさん :2007/05/05(土) 17:42:45
>>405
いや、D3DXの話。Direct3D10でもDirect3D 9時代のD3DXが使えるのかな、とちょっと心配だったもので

408 名前:デフォルトの名無しさん :2007/05/06(日) 21:59:11
VRAMを食い尽くすまで1MBずつ確保してみるとか

409 名前:デフォルトの名無しさん :2007/05/06(日) 22:41:12
C++のソースモジュールのサンプルをまとめたページとかないですかね?
例えば、
「cout」をクリックするとサンプルソースのページへリンクしてる様な。
↓(使い方の例)
#include<iostream.h>
using namespace std;
int main()
{
cout<<"hello"<<endl;
}
って感じで。

410 名前:デフォルトの名無しさん :2007/05/06(日) 22:50:39
なんでここで聞くんだ?

411 名前:409 :2007/05/06(日) 23:20:22
どこで聞きゃいいんだ。初心者だからワカンネえの。

412 名前:デフォルトの名無しさん :2007/05/06(日) 23:33:18
>#include<iostream.h>
>using namespace std;

こういう間違った使い方の例をリンクしているページを探しているとは、
わけの分からん奴だな。

413 名前:デフォルトの名無しさん :2007/05/06(日) 23:44:50
3D関連のサンプルソースを公開してくれている海外サイトで、お勧めの所とかないでしょうか?

414 名前:デフォルトの名無しさん :2007/05/06(日) 23:46:50
STLが格好良くて使ってみたい年頃
君らもあっただろう

415 名前:デフォルトの名無しさん :2007/05/06(日) 23:48:04
>>413
マイクロソフトのDirectX SDKのサンプルコードは世界中のDirectX開発者が参考にしてるよ

416 名前:デフォルトの名無しさん :2007/05/07(月) 00:18:01
>>412
>using namespace std;
俺、これっていつもおまじないだと思って書いてるけど実はどうなの?w

417 名前:デフォルトの名無しさん :2007/05/07(月) 00:19:13
まず名前空間について理解しろよ

418 名前:デフォルトの名無しさん :2007/05/07(月) 00:21:11
やはりSDKサンプルコードが一番参考になるんですね。
ありがとうございます。

419 名前:デフォルトの名無しさん :2007/05/07(月) 00:34:07
>>417
いや、津皮ネェ死

420 名前:デフォルトの名無しさん :2007/05/07(月) 00:43:00
いや、趣味がライブラリの作成である場合、カッコイイライブラリにするためには
名前空間は必要だよ。

421 名前:デフォルトの名無しさん :2007/05/07(月) 01:04:58
>>420
なんだよ、それ? 趣味がライブラリの作成? アホか?



・・・って、よくよく考えたら俺のことじゃねぇか。

422 名前:デフォルトの名無しさん :2007/05/07(月) 01:12:40
>>416
iostream.hとiostreamの違いについてレポートを提出せよ。
そうすれば412の言っている意味が分かる。

423 名前:デフォルトの名無しさん :2007/05/07(月) 12:22:29
みなさんFXファイルって使ってる?
市販のゲームとか、普通にFXファイルをロードするやり方しているのかな。
テキストファイルだし、遅いような気がするんだけど。開発時だけFXファイルで、
リリース時は別のファイルフォーマットに纏めていたりとかしないのかな。

FXファイルのロードとパースのスピードって実質どれくらい?

424 名前:デフォルトの名無しさん :2007/05/07(月) 12:23:54
コンパイル済みにバイナリに直せるだろ。
いったい何を言っているんだ?

425 名前:デフォルトの名無しさん :2007/05/07(月) 14:55:08
>>424
それが質問に対する答えのつもりならTHE YUTORIか。
> Q. FXファイルのロードとパースのスピードって実質どれくらい?
> A. コンパイル済みにバイナリに直せるだろ。
こんなのあるかよ。


誰か試した人いる?

426 名前:デフォルトの名無しさん :2007/05/07(月) 15:01:44
>>425
YUTORIじゃなくてノーギャラの間違いだと思う。

まあ自分のところではFXファイルの数よりもテクスチャ枚数の方が桁で多いので、
先にテクスチャロードの方をチューンして満足しちゃうことの方が多いなぁ。
なのでFXファイルのロードとか気にしたことも無いよ。

427 名前:デフォルトの名無しさん :2007/05/07(月) 15:18:48
>>425
俺は424じゃないけど、テキストファイルだから遅いんじゃないかと気にしてる人に対して、
fxc.exeによるエフェクトのバイナリ化を勧めるのは不適切な回答ではないと思うよ。
それに>>423は全部質問的な口調だから最後の一文だけが質問ってわけじゃないだろ?

コンパイル済みでもD3DXの関数でテキストと同じようにロードできるし、速いし、隠蔽できるし。
特別トリッキーなことをしたいとかじゃない限り事前にコンパイルしない理由はないと思う。

428 名前:デフォルトの名無しさん :2007/05/07(月) 15:19:52
FXはカスタムコンパイルに仕込んでおいて、事前にヘッダ化。
C++のコードをコンパイルする段階で組み込まれるようにしている。

429 名前:デフォルトの名無しさん :2007/05/07(月) 15:22:26
>>428
俺もそうしてる。

430 名前:デフォルトの名無しさん :2007/05/07(月) 15:46:32
質問スレでこちら誘導されたので、書き込ませていただきます。

DirectXでプログラムを組もうと思い、SDKをインストールしようとしたのですが
どのバージョンを入れるのが一般的には良いのでしょうか?

今公式で落とせるのは9.0のようなのですが
XPに標準で入っている8.1のSDKで組むほうが良さそうな気がしてきて
どうしようか悩んでいます。

というのも、DX9だと、同じ9.0cでもdllが足りなくて起動できなくなるというような話も
耳にしたことがあり、DX8.1のほうがいいのかなと思っております。

そこで、経験者の方で、経験上こっちのほうが良いという意見があったら
簡単な理由もつけて教えていただけけないでしょうか?

よろしくおねがい致します。

431 名前:デフォルトの名無しさん :2007/05/07(月) 16:18:49
DirectXを使って2D描画を行う場合について解説サイトをいろいろ回ったところ
1. ポリゴンを使って、それを3D空間の正面に張って2Dに見せかける方法
2. スプライトですべて描画を行う方法
の2種類に分かれているのがわかりました。

この場合、どちらがどのようなメリットがあるのでしょうか。
両方とも同じだと考えて良いのでしょうか?


↑の方法について、素人考えで思う点がいくつかありまして

1の場合
・仮に2D平面のままX,Y軸回転を使いたくなったとき等に便利?
  (例えば、カードをひっくり返すときの回転など)
・カメラの位置などをよほど厳密に合わせないと、タクスチャがにじんだりする?
  (3Dと違って2Dの場合は1ドットのズレでも目立つような気がします)

2の場合
・800×600の背景画像などをスプライトにする例はサンプルでも見たことがない
  (あまり大きい画像をスプライトにすると問題があるかもと思ってしまう)
・画像の描画座標が元々2D平面のため、座標ズレ、にじみ等が起こりにくい?
・ポイントスプライトやX軸orY軸回転など、様々なエフェクトが使いにくそう
  (派手なエフェクトなどは無理そう?)

というような点が考え付くのですが、これらは間違った認識でしょうか?

432 名前:デフォルトの名無しさん :2007/05/07(月) 16:49:11
>>430
Direct3D8は間に合わせで作った出来の悪い粗悪品だから
仕様上の問題点も多いので、素直に9を使った方がいいよ。

DLLが足りない問題等は、ランタイムのウェブインストーラへの
リンクを書いておけばいいかと。

433 名前:デフォルトの名無しさん :2007/05/07(月) 16:58:52
>>432
あと、ユーザーは取説読まないので、起動時にDLLチェックして
無ければウェブインストーラのページに飛ばしてあげるとなお良いかな。

434 名前:デフォルトの名無しさん :2007/05/07(月) 17:47:05
>>430
お前はSP2が入っていない、MSですらサポートを打ち切った環境をターゲットにするつもりなのか?

435 名前:デフォルトの名無しさん :2007/05/07(月) 17:48:00
>>431
DirectXにはスプライト機能など存在しない。

436 名前:デフォルトの名無しさん :2007/05/07(月) 18:35:48
>>435
マジですか…
ID3DXSpriteと言うのを検索でいくつか
見つけたのであると思ってたのですが
これは違うのですか?

437 名前:デフォルトの名無しさん :2007/05/07(月) 18:37:34
D3DXライブラリの機能な。

438 名前:デフォルトの名無しさん :2007/05/07(月) 18:46:29
えーと…つまり

スプライトはmicrosoftが作ったライブラリの機能であり
単にポリゴンを使った2D描画を簡単に扱えるだけで
中でやってることは全く同じである

むしろその分やれることが少なく、自由度は低い

であってますでしょうか?
だいたい431の内容の後半は当たっていると考えてよいですか?

439 名前:デフォルトの名無しさん :2007/05/07(月) 19:37:00
>>427
>>428
カスタムコンパイルって、VisualStudioのカスタムビルドのことね?
なるほど、その方がいいなぁ。
というかfxc.exeなんてのがあるって知りませんでした。
OpenGLから移ってきたばかりなもんで・・・。

440 名前:デフォルトの名無しさん :2007/05/07(月) 20:43:44
>>432-433
あれから調べていたら、9.0cで作ったプログラムを9.0cが入ってるマシンで
起動した場合でも、d3dx_**.dllが足りないというエラーが出ると聞いて
なんか紛らわしいなぁと思っていて、さらに深みにハマってたところです。
ただ、品質が悪いということなら、素直に9.0cにしておこうと思います。
回答ありがとうございます。

>>434
最近のゲームでも、8.1以上というゲームが多いため、
やはり8くらいからできるようにしたほうがいいのかな…と思っていました。
単に、昔から開発していたものだから8.1以上なだけかもしれませんね。

441 名前:デフォルトの名無しさん :2007/05/07(月) 22:57:47
>>439
俺もカスタムビルドにしてるよ。
>>428のヘッダ化というのがちょっと意味がわからないが。
エフェクトは便利だが、柔軟性がなく冗長なコードを書かされるのが
不満と言えば不満。
例えばテクニックの中でフロー制御出来て
ダイナミックにパスを組み立てて実行出来たら、もっと便利。

442 名前:441 :2007/05/07(月) 23:00:13
ああ、ヘッダ化ってのわかった。
なるほど、そっちの方が便利そうだなぁ。

443 名前:デフォルトの名無しさん :2007/05/07(月) 23:27:10
欠点を挙げると、D3DXを静的にリンクするときに、
コンパイル済みのデータを使っているにもかかわらず、
どでかいシェーダコンパイラが一緒にexeに含まれること。
それほど複雑とは言えないシェーダの構文を変換するだけで500KB以上食うのはいくら何でもでかすぎ。

444 名前:デフォルトの名無しさん :2007/05/07(月) 23:49:18
>>443
それマジ?
俺のexe、半分以上がD3DXだったのか・・
ってd3dx9_33.dllてのあるし、実際のところどうだろうね?
何かわかる方法あるかな?

445 名前:デフォルトの名無しさん :2007/05/07(月) 23:52:01
DLLを呼び出している場合は関係ない。

446 名前:デフォルトの名無しさん :2007/05/07(月) 23:53:55
SDKの2004シリーズで、D3DXでシェーダを読み出すコードを入れるか入れないかで、
面白いように実行ファイルのサイズが変わる。

447 名前:デフォルトの名無しさん :2007/05/08(火) 00:00:04
>>431
トランスフォーム済み頂点(TL頂点)使えばXYは画面のそれぞれの軸、Zが奥行きで指定できる。
SetFVFのヘルプ当たりを探っていたら〜RHWってのがあると思うから調べてね。

448 名前:デフォルトの名無しさん :2007/05/08(火) 01:11:49
>>447
ええと…トランスフォーム済み頂点を使えば
SpriteでもX軸回転やY軸回転ができるということでしょうか?
ちなみに、先ほどD3DXMatrixRotationZを用いてスプライトの回転ができたので
単純にD3DXMatrixRotationYを使ったところ、まともに回転しませんでした。
これからSetFVFについて調べて回転をしてみたいと思います。

449 名前:デフォルトの名無しさん :2007/05/08(火) 06:49:17
>>448
頂点座標を直接指定してDrawPrimitiveUPとかで描画。
回転なら行列をかけてもいいけど、sinやcosを使って計算しても簡単に出来る。
正方形なら画像の中心で横に(Z軸)回転する場合、v[0].x=sin( D3DXToRadian( 45 + Angle ) );とか。

450 名前:デフォルトの名無しさん :2007/05/08(火) 22:23:35
>>449
一通り勉強して理解しました。
スプライトでやろうが、rhwでやろうが、
はなっから2次元前提なので、Z軸回転しかできないってことですね。

では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。

スプライトとrhwでの描画はまったく同じものであり、
3次元空間に描画を行わない限り過剰なエフェクトはかけられない
という認識で正しいですか?

451 名前:デフォルトの名無しさん :2007/05/08(火) 22:27:55
とりあえず余計なことを考える前にSDKのチュートリアルを終わらせろ。
四の五のいうのはそれからでいい。

452 名前:デフォルトの名無しさん :2007/05/08(火) 22:32:57
なんでD3DXSpriteに手を出した初心者は珍奇な勘違い野郎になるの?


453 名前:デフォルトの名無しさん :2007/05/08(火) 22:34:30
>>450
>スプライトでやろうが、rhwでやろうが、
>では、スプライトはrhwでの描画を行うライブラリという概念でよいのでしょうか。
>スプライトとrhwでの描画はまったく同じものであり、

rhw、rhwって、おまえRHW(Reciprocal Homogeneous W)の意味わかって言ってるのか?
自前でTL頂点に変換するときに3次元空間上で回転させるのも自由だろ。

454 名前:デフォルトの名無しさん :2007/05/09(水) 00:55:15
>>451
SDKのチュートリアルは、一応一通り読みました。
(日本語版なので、2004年版と少し古いですが)

>>453
もちろんワールドからビューポート変換まで、全て自前でやるならば可能だと思います。
ですが、3D空間上にポリゴンをおき、それを完全に2Dスクリーン上に
1ドットの狂いもなく配置するとなると、非常に難しそうなイメージがあり
単にスプライトのように張っただけでもテクスチャがぼやけたりしそうだなと…

本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
伝わりにくかったかもしれませんが、rhwというのは
「D3DFVF_XYZRHW(スクリーン上の頂点座標)を用いて処理を行う場合」
という意味で使ったつもりです。

>>452
3Dの概念をうまく理解できないオールドタイプで申し訳ありません。

455 名前:デフォルトの名無しさん :2007/05/09(水) 07:52:38
>>454
XYZRHWはZ値(奥行き)がどうであれスクリーン座標の位置は変わらないから、UV値を間違えない限りぼやけることはない。
1ドットの線も綺麗に描画されるし。

>本格的に3Dをやるのではなく、あくまで2Dの補助として使いたい場合に
>XYZRHWを用いて、なんとかごまかすなどの方法がないかと思ったのです。
誤魔化すどころかこっちが主流じゃね?

ちなみに机の上に紙を置いた状態でZ軸回転は頭の中で理解出来ているよね。
これをノートのページをめくる様な見た目がX軸やY軸回転。
現実世界は3D、机の真上からノートを見たら2Dに見えるだけで(ry

456 名前:デフォルトの名無しさん :2007/05/09(水) 08:18:24
>>454
読んだだけでは理解できないんだから、
怠惰で手抜きせずにきちんと自分でコードを入力して、動かすところまでやれ。

457 名前:デフォルトの名無しさん :2007/05/09(水) 10:37:18
DirectXの昔のSDKってもう手に入れることは出来ませんか?DirectX6用のリファレンスやサンプルソースをが欲しいのですが。
Microsoftのダウンロードセンターにももう無いみたいだし、ぐぐって見てもruntimeはあったんですがSDKはさすがに見つけられずで、あとは古い本に付属してるのを探すくらいしかないのかなあと思ってるんですが。

458 名前:デフォルトの名無しさん :2007/05/09(水) 10:42:32
そんな中途半端なものが必要な理由は?

459 名前:デフォルトの名無しさん :2007/05/09(水) 11:10:40
DirectX6で作られたすでにあるアプリに外からDirectPlayでつなげようとしていて、新しいDirectPlayだと上手く繋がらないので、バージョン互換の問題なんかなあと思ってて、DirectX6のSDK探してました。

460 名前:デフォルトの名無しさん :2007/05/09(水) 12:48:31
アルファが全部真っ黒なスプライトを描画すると
通常通りだと何も描画されないはずなんですが、

全部描画されるんですけど仕様ですか?
素材をいじる以外で回避方法はありますか?

461 名前:デフォルトの名無しさん :2007/05/09(水) 13:26:26
全然情報が足りない。
説明するのが面倒なら他人を頼るな。

462 名前:460 :2007/05/09(水) 15:34:17
サンプルつくりました。ソース一式あげました
bmpは、32bitのbmpです。
http://www.uploda.org/uporg803343.zip.html
pass: test

左から順に
・アルファが全部00のbmp
・左から右に00→FFなアルファのbmp
・全部FFのbmp
を表示しています

一番左が全部アルファ0なので非表示になると思うのですが全部表示されるんです。
真ん中は、綺麗に半透明にグラデーションがかかっています。
右は、普通に表示されています。

で、一番左の原因を知りたいのです。

動作環境は XPで
ボードは、GeForceFX5200と6600、両方とも同じ結果になりました。

VC++2003で
DirectXSDKは、October 2006だと思います。

他にも足りない情報があったら言ってください。
よろしくおねがいします。

463 名前:460 :2007/05/09(水) 15:38:33
描画にDrawPrimitiveUpを使っていますが
D3DXSpriteでも、同様の現象が出ます。

464 名前:デフォルトの名無しさん :2007/05/09(水) 18:36:34
ビットマップの中身をバイナリエディタで確認してみろ。

465 名前:460 :2007/05/09(水) 18:45:48
すいません。右側のalfaFFのbmpの方が間違えてました。
修正しました。
http://www.uploda.org/uporg803484.zip.html
pass: test

やはり、左右ともベタ表示されます。

466 名前:デフォルトの名無しさん :2007/05/09(水) 18:56:07
32bitBMPの上位8bitは必ずしもアルファ値ではない。

467 名前:460 :2007/05/09(水) 19:01:17
このソースでは、32bitBMPを読んでいますが
textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。


468 名前:460 :2007/05/09(水) 19:07:10
一つでも01だと消えます。(01の部分だけうっすらと表示してる予感)

469 名前:デフォルトの名無しさん :2007/05/09(水) 19:19:01
BMP ファイルや DIB にはアルファ値込みのフォーマットが存在しない。
D3DXCreateTextureFromFile は 32bpp の BMP を処理する際に、
ヒューリスティックな処理をおこなってα値の有無を決定している。
んでオールゼロだとただの(α無しの)BMPと判定される。
PNGを用いること。

とかそれらしいことを書こうと思ったのに
>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
かw

470 名前:デフォルトの名無しさん :2007/05/09(水) 21:27:44
>>469
フォーマットにD3DFMT_X8R8G8B8が選択されてる悪寒

471 名前:デフォルトの名無しさん :2007/05/09(水) 22:06:34
>>470
469じゃないけどちょっとソース弄って試してみた。
GetLevelDesc で調べたら、案の定 test1.bmp だけ X8R8G8B8 になってるね。
D3DXGetImageInfoFromFile でも同様にフォーマットが X8R8G8B8 だと判断される。
で、試しに D3DXCreateTextureFromFileEx で強制的に A8R8G8B8 にしてみたら、
ファイルのアルファ値が無視されて全部FFになっちゃった(まあ当然だけど)。
もちろん、さらにロックして全部00に書き換えればちゃんと透明になってくれた。

472 名前:460 :2007/05/10(木) 00:15:33
すいません
>textureをLockして、全部のアルファを00にしても同様の現象が起こるのです。
と言いましたが
作成後のLockじゃなくCreate〜FromMemoryに入れる数値をいじってたみたいでした。
すいません

現象の理由は解決しました。(Alphaが00の時、マスク無し形式とみなされる)
ありがとうございました。



473 名前:デフォルトの名無しさん :2007/05/10(木) 21:09:26
なぜか最近、xファイルを見ようとすると、
Loading effect Resource #103
というエラーが出て、見ることが出来なくなりました。

きっかけとして思い当たるのが、DirectXsdkを入れた事ぐらいなのですが、
解決方法の分かる方はいませんでしょうか?

474 名前:デフォルトの名無しさん :2007/05/10(木) 21:25:41
それって何が吐き出すエラーなのか言いなさいよ

475 名前:デフォルトの名無しさん :2007/05/10(木) 23:09:17
>>474
DirectX Viewerです。

Xファイルを上記の物で開くと、「問題が発生したため、DirectX Viewerを終了します」という
Windowsエラーメッセージ(?)を吐き出してきて、ViewerのログにLoading~というメッセージが表示されています。

476 名前:デフォルトの名無しさん :2007/05/10(木) 23:13:14
>>475
DirectX Viewerが内部で使うシェーダコンパイラが、Dec 2006 から
D3DX10版がデフォルトになって、そのせいでぐだぐだになってるわけね。
・他のビューアを使う
・Oct 2006 以前のSDKをインストール
・DxViewerのソースを修正してビルド
のどれかね。

477 名前:デフォルトの名無しさん :2007/05/10(木) 23:14:16
うちのSDK April 2007もそういう結果になる。
普段Xファイルを使わないのでいままで気づかなかったけど。

478 名前:デフォルトの名無しさん :2007/05/10(木) 23:42:45
なるほど、ソース修正は結構手間が掛かりそうだし、
他のビューア探してみましたがどうやら開けないっぽいorz

となると、ひとまずOct2006以前のSDK使用しか選択示は無いようで。
お早い回答、有難うございました。

479 名前:デフォルトの名無しさん :2007/05/10(木) 23:57:30
>>476
Dec 2006以降のD3DXではps_1_xのサポートを打ち切ったっというのが直接的な原因みたいだね。
DirectX Viewerのデフォルトエフェクトのピクセルシェーダは complie ps_1_1 になってるから
ID3DXEffectCompiler::CompileEffect によるコンパイルで失敗する。


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