トップページ⇒tech
1001コメント306KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/05/08(日) 01:53:41
※回答する人も、質問する人も必ず読んでください

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part3【C++】
http://pc8.2ch.net/test/read.cgi/tech/1108987183/
0202デフォルトの名無しさん2005/05/28(土) 07:43:10
>>201
俺は作り直してる。
0203デフォルトの名無しさん2005/05/28(土) 10:45:02
>>198
ウィンドウのリサイズしたらプレゼンテーションパラメーターも作り直し、
更にその前にリソースを開放して構築しなす必要がある、
なんて聞いたことがあるけどよくしらない。
0204デフォルトの名無しさん2005/05/28(土) 10:57:45
描画するときに自分で拡大するように指定しているだけの話。
サンプル丸写しで各関数が何をやっているか考えずに使うから、
その程度のことすら分からない状態になる。
0205デフォルトの名無しさん2005/05/28(土) 11:13:30
>描画するときに自分で拡大するように指定しているだけの話。

それがどこで、どうなってるから、そうなってるのか、
分からないから聞いてるのに。
0206デフォルトの名無しさん2005/05/28(土) 11:40:50
>>205
SDK見れ
0207デフォルトの名無しさん2005/05/28(土) 11:47:07
>>206

>>1見れ
0208デフォルトの名無しさん2005/05/28(土) 11:53:29
つうか質問スレで意味不明にもったいぶった回答するバカって
何がしたいのかよく分からない。
教える気がないなら邪魔なだけだから書き込むなよ。
0209デフォルトの名無しさん2005/05/28(土) 12:03:50
カッコつけたいんだけど、回答して間違っていたりあらを指摘されるのが
怖いから、具体的には回答しないんだよ。
0210デフォルトの名無しさん2005/05/28(土) 12:55:09
つーかその程度もヘルプ見て理解できんヤツに
ここでちょっと書いただけで理解きでるとは思えないんだが…

自演乙
0211デフォルトの名無しさん2005/05/28(土) 13:03:02
どっちやねん。簡単な問題なら簡単に教えて解決→終了だろう。
教えない・教えられないなら黙ってろ。他の全ての人にとって邪魔だ。
0212デフォルトの名無しさん2005/05/28(土) 13:15:25
>>200
自己解決したならどう自己解決したか書きましょう。
都合良すぎです。
0213デフォルトの名無しさん2005/05/28(土) 13:44:53
普通はそうなんだが、説教だけでろくなレスが返ってこないこのスレじゃ
02142002005/05/28(土) 13:45:18
>>212
プログラムが原因と言われたので
初期化までの部分を一から書き直したたら
強制終了しなくなっただけで
明確な原因はわかってないのです
0215デフォルトの名無しさん2005/05/28(土) 14:33:17
今DirectXで一番新しいのは何ですか?
02161982005/05/28(土) 14:33:42
>>203
>>204
どうもありがとうございます
Present関数に2つの矩形を指定したら制御できました
ヘルプ見たらBlit元矩形と先矩形を指定してる関数だって書いてて納得しました。

デバイスの再作成も解決策の一つみたいなんですが
テクスチャが全部なくなっちまうのでちょっと気分悪かったんですが
Presentだけで対処すればそうはならないようですが…
いつまでも画面に映らない範囲のリソースを延々と保持する訳にもいかないので
いつか適当なタイミングで再作成も必要なんでしょうね…
0217デフォルトの名無しさん2005/05/28(土) 14:43:50
9.0c
0218デフォルトの名無しさん2005/05/28(土) 16:09:26
//移動ベクトルのリセット
shipFrame->SetVelocity(sceneFrame,D3DVAL(0),D3DVAL(0),D3DVAL(0),FALSE);

//宇宙船を右移動
if(KeyBuffer['6']&0xf0){// 6キーが押されていたら・・・
shipFrame->SetVelocity(sceneFrame,
D3DVAL(0.1),D3DVAL(0.0),D3DVAL(0.0),FALSE);
}

//宇宙船を左移動
if(KeyBuffer['4']&0xf0){// 4キーが押されていたら・・・
shipFrame->SetVelocity(sceneFrame,
D3DVAL(-0.1),D3DVAL(0.0),D3DVAL(0.0),FALSE);
}

//宇宙船を上移動
if(KeyBuffer['8']&0xf0){// 8キーが押されていたら・・・
shipFrame->SetVelocity(sceneFrame,
D3DVAL(0.0),D3DVAL(0.1),D3DVAL(0.0),FALSE);
}

//宇宙船を下移動
if(KeyBuffer['2']&0xf0){// 2キーが押されていたら・・・
shipFrame->SetVelocity(sceneFrame,
D3DVAL(0.0),D3DVAL(-0.1),D3DVAL(0.0),FALSE);
}

のプログラムをSetPositionとSetOrientationだけを使用したプログラムに変更したいの
ですが、どうしたらいいのか教えてください。 よろしくお願いします。
0219デフォルトの名無しさん2005/05/28(土) 16:43:10
>>218
マルチ乙
0220デフォルトの名無しさん2005/05/28(土) 19:48:32
ここで質問するより、BBX読む方が為になるに100ガベソ。
どうせ説教されて、さらにストレス溜まるだけ。
0221デフォルトの名無しさん2005/05/28(土) 19:57:57
>>218
196 名前: デフォルトの名無しさん 投稿日: 2005/05/27(金) 22:12:38
>>195
ここまでわかっててなんでわかんないの?
アドバイスのしようがない。
0222デフォルトの名無しさん2005/05/28(土) 21:50:11
テクスチャを張ったポリゴンの一部が画面外に出ると
表示がおかしくなるんですが、
どうすればいいでしょうか。

VC.net DirectX9で
DrawPrimitiveUP使ってます
0223デフォルトの名無しさん2005/05/28(土) 22:01:59
>>222
どうおかしくなったかくらい書け。
near設定がおかしいんだよ、どうせ。
0224デフォルトの名無しさん2005/05/28(土) 22:16:35
>>223
画像がゆがんだり消えたりします。

補足します
2Dのシューティングを作ろうとしていて、
背景を3Dで表現したいんです。

調べていくとどうも射影行列の設定がおかしい
っぽいのですが、どうおかしいのかも
本当にそうなのかもわかりません。
0225デフォルトの名無しさん2005/05/28(土) 22:23:07
さらに補足
おかしくなるのは2Dのほうで
(゚д゚)
↓
(°Д°)
こんな感じになります。

何度も補足すみません。
0226デフォルトの名無しさん2005/05/28(土) 22:36:14
アスペクトは?
0227デフォルトの名無しさん2005/05/28(土) 22:40:27
プロジェクション行列は
D3DXMatrixPerspectiveFovLH( &g_Projection, D3DX_PI / 4, 1.33f, 1.0f, 100.0f );
と設定してるので1.33fを指定してます。
0228デフォルトの名無しさん2005/05/28(土) 22:50:06
ビデオカード固有の問題かもしれないので、他の環境で試すべし。
0229デフォルトの名無しさん2005/05/28(土) 23:00:01
そうしてみます。
わざわざ回答してくださってありがとうございました。
0230デフォルトの名無しさん2005/05/29(日) 00:11:15
D3DXQUATERNION の乗算の計算が合わないんだけど、
これって左手座標系にするためにzの符号を反転して
から計算してるってこと?
0231デフォルトの名無しさん2005/05/29(日) 01:06:16
> 合わないんだけど

何と何の結果が合わないのか書かないと
答えようがないことに気づかないか?
0232デフォルトの名無しさん2005/05/29(日) 01:54:21
なんかこのスレに変なのが住み着いてますね
0233デフォルトの名無しさん2005/05/29(日) 02:00:27
符号間違えてるか、積の左右を間違えてるか。
0234デフォルトの名無しさん2005/05/29(日) 06:43:17
DirectX 9.0cをダウンロードしたいんですけど
ページが表示されないと表示され、できません
私だけでしょうか?
0235デフォルトの名無しさん2005/05/29(日) 08:19:47
D3DXのは左手座標系で反時計回りになるように調整してるんじゃない?
0236デフォルトの名無しさん2005/05/29(日) 22:24:03
>>234
ページが表示されないと表示され、
ページが表示されると表示されない。

お前日本語大丈夫か?
0237デフォルトの名無しさん2005/05/29(日) 22:25:31
>>236
>>236
>>236
>>236
>>236
0238デフォルトの名無しさん 2005/05/29(日) 22:28:55
キチガイ常駐フォーーーーーーーーーーーーーーゥ!
0239デフォルトの名無しさん2005/05/29(日) 22:32:06
>>236は「ページを表示できません」のエラーが表示されたことが無いようです
羨ましいですね^^;
0240デフォルトの名無しさん2005/05/29(日) 23:56:00
質問があります。
テクスチャがVRAMに載るのは、D3DXCreateTextureFromFile()でLPDIRECT3DTEXTURE9を
作ったときですか?それともID3DXEffect::SetTexture()を呼んだときでしょうか?

それとテクスチャをVRAMにどんどん載せていって、VRAM容量が超えたときは何が起こるのでしょうか?
0241デフォルトの名無しさん2005/05/30(月) 01:21:17
>>240
VRAMにのりきらなけりゃ、エラーになる。
オマエ、戻り値をチェックしないタイプだろ。
0242デフォルトの名無しさん2005/05/30(月) 02:04:51
>>241
レスありがとうございますた。
確かに戻り値はあんまチェックしないですね・・・。
これからは戻り値に気を付けたいと思います。
0243デフォルトの名無しさん2005/05/30(月) 02:39:45
VRAM足りなかったらメインメモリに載る。
0244デフォルトの名無しさん2005/05/30(月) 10:40:30
SetPositionやSetOrientationを使用して物体を移動させるには、具体的にどのようにすれば良いのか教えてください。
自分が今考えているのは、ある指定されたキーを押した時の位置や姿勢を直接与えればいいと思うのですが、合っているのかわからないので、教えてください。
0245デフォルトの名無しさん2005/05/30(月) 13:26:30
SetPositionってどこのクラスのだよ。IDirectSound3DBuffer8::SetPositionか?
0246デフォルトの名無しさん2005/05/30(月) 18:19:40
RMにそんなのがあったような・・・
0247デフォルトの名無しさん2005/05/31(火) 00:05:51
DirectInputでマウスを使用すると、
デバッグのブレーク時にマウスカーソルの動きがおかしくなります。

Win2000ではデバック時にカーソルの動きがおかしくなるという所までは
分かったのですが、それから上手い解決方法が見つかりません・・・。

DirectInputをデバッグ版で使用する方法が載っていたのですが、この場合、
SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE)
しか指定できず、カーソルが消えてしまいます。
OS変えるしか無いんですかね・・・。


ちなみに、マウスでDirectInputを利用しているのは、
ホイールの移動量をリアルタイムで調べる為です。
ウィンドウメッセージやDirectInputを使わずに
現在のホイールの座標を直接取得できれば解決するのですが・・・。

Windows2000
VC++2003
DirectX9 oct 2004
0248デフォルトの名無しさん2005/05/31(火) 00:11:13
ホイールに座標など無い。
0249デフォルトの名無しさん2005/05/31(火) 01:32:56
WM_MOUSEWHEELでいいだろ。
0250デフォルトの名無しさん2005/05/31(火) 02:26:45
インターネットの始め立てのころ、僕は掲示板に書き込むときなどは
もちろん敬語・丁寧語で書き込んでいました。
いつからか僕は平気で、偉そうに、だろだろ書き込むようになりました。
0251デフォルトの名無しさん2005/05/31(火) 03:05:21
>>250
すげー不自由な日本語使うね。
読み難いよw
「もちろん」の意味解って使ってる?
0252デフォルトの名無しさん2005/05/31(火) 04:33:28
>>250
お前ひょっとして中国人留学生か?間違え方がそれっぽいぞ。
もう少しまともな日本語を読み書きできるようになってから出直せ。
02532502005/05/31(火) 08:29:37
在日朝鮮人です
0254デフォルトの名無しさん2005/05/31(火) 09:19:01
>>249
ウィンドウがアクティブじゃなくても、
WM_MOUSEWHEELを受け取れますか?
0255デフォルトの名無しさん2005/05/31(火) 11:00:32
>>254
じゃあグローバルフックすればいいよ。
0256デフォルトの名無しさん2005/05/31(火) 11:07:50
在日朝鮮人なら日本語しっかりしてる筈だぞ。
0257デフォルトの名無しさん2005/05/31(火) 11:14:03
結局、インターネットで情報が簡単に調べられるようになっているから、
パソ通時代と違って質問ベースのBBSって必要ないんだよね。
そういう環境の中質問しに来るのは変なのばかり。
0258デフォルトの名無しさん2005/05/31(火) 11:15:39
常駐キチガイ自演フォーーーーーーーーーーーーーゥ!
0259デフォルトの名無しさん2005/05/31(火) 12:06:42
>>257
自分の国へお帰り下さい^^
0260デフォルトの名無しさん2005/05/31(火) 19:55:42
DX9.0Cから搭載されたCustomUIを日本語で
詳しく紹介してあるサイトがあったら教えてください
ゲーム画面中日本語入力が必要になったのでお願いします
0261デフォルトの名無しさん2005/05/31(火) 23:46:44
詳しく紹介してあるサイトがなかったので教えないフォーーーーーーーーゥ!
02622602005/06/01(水) 00:32:26
(;´Д`)残念 私も探してみたんですがわざわざ探していただいてありがとうございました
日本語入力を実装するのって難しいんでしょうか?
0263デフォルトの名無しさん2005/06/01(水) 01:10:43
http://www.google.com/search?q=DXUTgui
0264デフォルトの名無しさん2005/06/01(水) 01:47:33
日本語サイト知ってるけど教えないフォーーーーーーーーーーーーゥ!
0265デフォルトの名無しさん2005/06/01(水) 09:19:39
実に基本的なことで申し訳ないけど、 DirectX9c SDK は
Update summer 2004 のみでよろしいのでしょうか?
それとも DiectX9 SDK + summer 2004 ?
0266デフォルトの名無しさん2005/06/01(水) 18:15:07
頂点座標(XYZ)
法線ベクトル(XYZ)
頂点カラー(ARGB)

ライト
D3DLIGHT9構造体のデータ

マテリアル色
D3DMATERIAL9構造体のデータ

以上のデータを使ってライティングするコードを教えてください。もしくは公式を。
以前はDirectXのAPIを使ってやっていたのですが、諸事情により、自力で光源計算しないといけなくなりました。
もしスレ違いなら書き込むべきスレを教えてください。
よろしくお願いします。
言い忘れました、ライティングの種類は平行光源です。
0267デフォルトの名無しさん2005/06/01(水) 18:17:01
age
0268デフォルトの名無しさん2005/06/01(水) 18:24:37
頂点法線の方向と、光源の方向の内積を計算。
その値と、頂点カラーと、拡散反射係数を乗算するとディフューズ色はでるけれど。
0269デフォルトの名無しさん2005/06/01(水) 18:44:36
固定機能のワールド行列は
頂点だけでなく、法線も適用されますか?
0270デフォルトの名無しさん2005/06/01(水) 19:24:13
win2000だと DX9.0 SDK Update (December 2004) までで
vc++6.0の場合は DX9.0 SDK Update (October 2004)まで対応してるんですよね?

0271デフォルトの名無しさん2005/06/01(水) 20:51:09
>>266
SDKのヘルプに全部書いてあるじゃん。
Mathematics of Lightingってところ。
0272デフォルトの名無しさん2005/06/02(木) 00:48:28
>>266
頂点へのランバートの余弦則と、フォンのスペキュラでモーマンタイ。
あとは面内補間だから。
0273デフォルトの名無しさん2005/06/02(木) 01:00:13
>>269
されるよ。されるけど、normalizenormal だかなんかのレンダリングステイトを
イネーブルにしないと、ワールドマトリックスのスケーリング成分に合わせて拡大されてしまう。
っていうか、シェイダー使った方が楽。
0274デフォルトの名無しさん2005/06/02(木) 01:02:30
>>273
これ、知らないで拡大して真っ黒になっちゃって、あわてる馬鹿な同僚がいたw
そんときいそがしかったから、正直、氏ねって思った。
0275デフォルトの名無しさん2005/06/02(木) 01:09:58
「モーマンタイ」って何ですか?
0276デフォルトの名無しさん2005/06/02(木) 01:10:44
>>275
胃薬の名前
0277デフォルトの名無しさん2005/06/02(木) 01:11:03
>>274
同僚が悪いんじゃない。MSが悪い。
0278デフォルトの名無しさん2005/06/02(木) 01:23:40
無問題=モーマンタイ
0279デフォルトの名無しさん2005/06/02(木) 01:31:59
>>277
そんなわけない。
余計な計算であることは事実なんだから。
OFFがデフォで正しい。
0280デフォルトの名無しさん2005/06/02(木) 01:32:50
>>274
俺もへぼプログラマですが、日頃から同僚に氏ねって思われてるんでしょうか?orz
0281デフォルトの名無しさん2005/06/02(木) 01:42:05
>>280
当たり前じゃん。
プログラマなんて自分より実力が無いのはみんなクズなんだから。
0282デフォルトの名無しさん2005/06/02(木) 01:50:19
>>279
すべてのモデルをスケーリングを前処理でやれば問題ないが、
固定パイプラインの即席でできる的なコンセプトから言えば、
適当なモデルをスケーリングして回転して移動して即席表示できるべきだ。
なので法線のノーマライズは「余計な計算」でなく、「やらなきゃいけない計算」
なわけだから、ONがデフォが正しい。
最適化したい人がOFFにすりゃいい。
そういう人は、何が問題だかわかっているわけだからそれこそ問題ない。
初学者に「機能をすべて把握してから使え。」なんて強要しているAPIはアふぉでしょ。
こういうのはAPIデザインをする側の問題。同僚は悪くない。
0283デフォルトの名無しさん2005/06/02(木) 01:55:49
>>278
thx
0284デフォルトの名無しさん2005/06/02(木) 02:01:41
>>282
いや、そのまえに法線知らないで3Dいじるなよ。
って時代にできたものだからな>固定パイプライン
さすがにそんなレベルの低い奴はいなかったけどな。
今は違うんだね。
0285デフォルトの名無しさん2005/06/02(木) 02:44:18
>>284
昔のD3D初心者は「固定パイプライン内部の変換で法線ベクトルがノーマライズされない」ことに事前に気づくやつばっかだったか?
んなわけない。
初心者が、レンダリングステートを一通り目を通さなきゃ正常に動作しないってのはおかしいだろ。
OpenGLを見よ。「いじらなくともデフォで《正常》に動く」のがあたりまえのソフトウェアデザイン。
「いじらないとデフォで《異常》な動作をする」のは底辺プログラマの所業。
0286デフォルトの名無しさん2005/06/02(木) 03:44:13
レンダリングステートはとりあえず何があるかチェックしとくもんだと思うが。
0287デフォルトの名無しさん2005/06/02(木) 04:23:18
初歩的な質問ですいません。
Directx本体は英語版ですよね??

みんなそれ使ってるよね?
02882852005/06/02(木) 04:28:52
>>286
あなたの主張からは、初心者を馬鹿にして「自分の方が上」って思いたいという思いしか伝わってこない。
でないなら、何が言いたいわけ?論旨はなによ?

02892872005/06/02(木) 04:34:23
どうも、ヘルプだけ日本語で用意されているご様子
0290デフォルトの名無しさん2005/06/02(木) 05:16:09
NORMALIZENORMALSは7からできたものだから
「昔のD3D初心者」には関係なかったけどなw
02912702005/06/02(木) 07:12:43
自己解決。vc6.0はreadme見たら(Summer 2003)までっぽいですね。
0292デフォルトの名無しさん2005/06/02(木) 07:34:36
シェーダで計算した結果を、メモリに書き戻して取り出すことは出来ますか?
0293デフォルトの名無しさん2005/06/02(木) 22:40:03
>>285
はぁ?馬鹿?
異常な動きじゃないじゃん。
実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
表示はバグってないだろ。

正しい対処方は法線を表示できるようにすることであって
なんでもかんでも法線を正規化して表示することじゃないでしょ?

こういう問題をどうして正しくとらえることができないかな?
対処法間違ってるのわからないの?
レベル低すぎ。って初心者スレかw
0294デフォルトの名無しさん2005/06/03(金) 00:19:06
>>292
できなくはない、というレベル。
レンダリングターゲットを用意して、そこに書き込む。
0295デフォルトの名無しさん2005/06/03(金) 00:47:01
>>292
WGFからは確か出来るようになるんじゃなかったかな。
今はテクスチャにデータを載せてピクセルシェーダーで処理して
テクスチャに書き出してそれを使う。GPGPUで検索しろ。
0296デフォルトの名無しさん2005/06/03(金) 01:04:35
>>293
> 実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
> 正しい対処方は法線を表示できるようにする

超〜ハズカシイやつ。
勉強不足な頓珍漢なバカはおまえだよ。何が問題かすら全くわかってない。
レベルが低すぎるのはおまえだろうがw
0297デフォルトの名無しさん2005/06/03(金) 01:09:05
>>296
はぁ?じゃ、何が問題なのか説明しろよ。
0298デフォルトの名無しさん2005/06/03(金) 01:21:24
>>297
何が問題って、俺が何の話しているかすら判ってない上に、
如何にも付け焼刃の知識(しかも間違っている)で頓珍漢な対処法とやらを開陳して、
人を馬鹿な初心者呼ばわりしているおまえのバカさ加減。
0299デフォルトの名無しさん2005/06/03(金) 01:25:36
ステートが問題じゃなくて
法線にスケーリングが掛かったら、それが
どう言う意味か知らない奴がD3Dを使用するなって感じ。
初心者とかじゃなくて、数学や技術の問題。

そもそも、スケーリング成分が無い行列をセットされるのが有り得る、もしくは大半なのに
いちいち正規化するのが無条件なんてDirectXじゃなくて、非リアルタイムよりのOpenGLを使えって感じ。
(まあ、そう言っちゃてるがw)

言い換えると、int型なりshort型なりの変数に値を代入したら
いちいちその型のオバーフローをチェックするのが当たり前とか抜かしてるレベルと一緒だろw
代入 -> if 型オバーフローチェック -> 変数に代入の度にデフォ
見たいな感じw
0300デフォルトの名無しさん2005/06/03(金) 01:48:13
>>299
だからさぁ、固定パイプラインの話だぜ?
どこのクソ業者が今時シェーダー使わずに固定なんか使っちゃっているわけよ???
キミのところは「OpenGLなんか非リアルタイムだぜ。うちはDirectX固定パイプラインでバリバリリアルタイム」
なんていっちゃっている痛い会社なわけ?
シェーダーが主流である現在、固定ってのは初学者がD3Dに入門するためのモードって言い切っちゃっていいでしょ。
トランスフォーメーションパイプラインで法線を正規化するのかしないのかってのはAPIの実装依存ってのは判るよな?
固定だとトランスフォームしたノーマルをクライアントに返さず、そのままライティングに使うわけだ。
だからこそ、normalizenormalというユーザー設定可能なレンダリングステートが用意されている。
それはよしとして、固定の使用用途から言って、このデフォルト値がOFFである必要は全く無い。
最適化の必要ない所があえてフールプルーフになっていないのはあふぉ。
なぜなら、そもそもプロは固定なんか使わないから。
0301デフォルトの名無しさん2005/06/03(金) 01:49:38
>>300
意味不明。
0302デフォルトの名無しさん2005/06/03(金) 01:58:47
今時のゲームはシェーダーが当たり前なんですか
古いカード使ってるユーザーは無視


なわけねえよね
■ このスレッドは過去ログ倉庫に格納されています