トップページ⇒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/
05545222005/06/18(土) 20:31:02
>>553
ありがとうございます、原因はそれだったようで○| ̄|_
フォルダを指定したら自動的に判断してくれているものと思ってましたが、自分で決めないといけないとは・・。

>>551
そのまま指定すると絶対パスになりますが今まで不具合が出たことがありません。
相対パスにしないと何か問題が起きるのでしょうか?
0555デフォルトの名無しさん2005/06/18(土) 20:50:18
無能すぎ
0556デフォルトの名無しさん2005/06/18(土) 21:00:47
>>547に逆ギレしたくせにこれだよ…ヤレヤレ
0557デフォルトの名無しさん2005/06/18(土) 21:05:17
リアルじゃ見れない品、こんなアホ
レアなもん見れたと思えばいいじゃん
0558デフォルトの名無しさん2005/06/18(土) 21:10:00
>>556
547と553の意味は別々だろ
混同してたらお前も522と同類
0559デフォルトの名無しさん2005/06/18(土) 21:46:14
DirectXゲームグラフィックスプログラミング Ver. 2.0を参考にしてます
単なる三角形を表示するだけのサンプルを改良して
三角形を二つ表示するプログラムが作りたいと思い
変数を追加して、少し座標をずらして表示させてみたところ
後に追加したほうの三角形しか表示されません

試行錯誤の結果
pD3DDevice->SetStreamSource( 0, m_pMyVB, 0, sizeof(MY_VERTEX) );
pD3DDevice->SetStreamSource( 0, m_pMyVB2, 0, sizeof(MY_VERTEX) );
この関数で後に設定したほうが先に設定したほうを上書き?してるようでした
三角形を複数表示しようと思った場合、普通はどうやるのでしょうか?
0560デフォルトの名無しさん2005/06/18(土) 21:48:11
今回の問題ってVCの問題だろといい続けてた奴らいるけどDirectXのディレクトリ構造が分かってなかったのが問題だよな?
あくまで”DirectXのlibファイルの場所"を勘違いしてたってことでVCの設定の仕方が分からなかったわけじゃないみたいだし

DirectX初心者に優しくないなこのスレ
05615592005/06/18(土) 21:51:26
1つ目
SetStreamSource(一つ目のデータ
SetFVF
DrawPrimitive
2つ目
SetStreamSource(2つ目のデータ
SetFVF
DrawPrimitive
とすることで解決しました、すみません
0562デフォルトの名無しさん2005/06/18(土) 21:56:45
>>560
わかってなかったわけでもないだろ。
ただの確認不足。
頑なに自分の間違いを疑わず、
こうなるはずだ。等と思い込みで勝手に突き進んでたのが問題。
こういう馬鹿は成長しても結局同じ事を何度も繰り返す。
ここで潰しておいた方がよかった。
0563デフォルトの名無しさん2005/06/18(土) 22:02:54
>>562
確認したら俺の持っている本は全部IncludeフォルダとLibフォルダを指定するとしか書いていないぞ。
0564デフォルトの名無しさん2005/06/18(土) 22:06:04
>>563
なにがいいてぇんだ?
0565デフォルトの名無しさん2005/06/18(土) 22:12:05
そもそもインストール時にパスは自動設定されるはずだが。
05665632005/06/18(土) 22:17:23
>>564
語弊があったかもしれんが、なぜSDKディレクトリの登録をしなければいけないのかやそれをすることによってどういう働きをするのか書かれていない。
そこから始める人にその時点で覚えさす必要はないが、書かれていない以上IncludeとLib両フォルダを登録しなければならないとだけ覚えていれば十分だと思う。
0567デフォルトの名無しさん2005/06/18(土) 22:18:18
今まで自動設定なんて親切なことしてくれなかったぞ。
0568デフォルトの名無しさん2005/06/18(土) 22:22:23
>>566
いつまで初心者でいるつもりだ?w
0569デフォルトの名無しさん2005/06/18(土) 22:25:18
>>565
同じく自動的にパスの設定をしてたってことはないな。
ちなみに.NET。
0570デフォルトの名無しさん2005/06/18(土) 22:32:11
DirectXになんて手を出す時点で”初心者”ではないとおもうが。
それとも初心者が出を出してしまった結果がアレなのか
0571デフォルトの名無しさん2005/06/18(土) 22:34:06
VS.NET2003で確認した結果、SDKをアンインストールするとパス設定が自動的に消去され、
インストールし直すと再びパスが設定し直されていた。
0572デフォルトの名無しさん2005/06/18(土) 22:45:17
>>570
アプリを作って公開し、叩かれたらやっと脱・初心者( ´ー`)y―┛~~
>>565
2台のPCで確かめたら1台は設定されたがもう一台は変化なし。
>>571をやってみたが設定されなかったほうは再び設定しなおされることがなかった。
0573デフォルトの名無しさん2005/06/18(土) 22:46:27
>>570
PC初心者とDirectX初心者の違いもわからないのか?
0574デフォルトの名無しさん2005/06/18(土) 22:50:47
>>573
PC初心者ならわかるが、DirectXに手を出すってことは当然通常の(?)プログラミングは知っていて
当然インクルードパスやライブラリパスなんて知ってるだろ。
0575デフォルトの名無しさん2005/06/18(土) 22:53:06
>>574
学校である程度プログラムを習ったからゲームを作ってみたいとか考えてる輩は知ってて当然とはいいがたいな
最近は昔と違って随分敷居が低くなってるからその辺の当然を求めるのはどうかと思うぞ
0576デフォルトの名無しさん2005/06/18(土) 22:56:46
Flashでイラストをプログラム制御してたのがきっかけで、その延長でDirectXを始めてたからそのときは知らなかったなぁ。
昔はどういう順序でプログラミングに入っていったんだろ。
0577デフォルトの名無しさん2005/06/19(日) 00:42:12
x86とx64の違いって何なんですか?32bitか64bitかってことですか?
0578デフォルトの名無しさん2005/06/19(日) 00:46:07
age
0579デフォルトの名無しさん2005/06/19(日) 00:47:45
>>577
またすごい釣り師が来たな
0580デフォルトの名無しさん2005/06/19(日) 01:22:43
あとXfree86とX68というのもあるぞ、ヤヤコシイ
0581デフォルトの名無しさん2005/06/19(日) 01:47:32
日曜プログラミングレベルだと、Win32とかすっ飛ばしていきなりDirectX始めたり
Javaすっ飛ばしていきなりiアプリ始めたりするやつはいるわけで、
それ自体は悪いことではなかろう。パラシュート勉強法なんて言葉もあったが。
0582デフォルトの名無しさん2005/06/19(日) 11:30:48
悪い事じゃないにしても、独学をちゃんとして欲しいね。
0583デフォルトの名無しさん2005/06/19(日) 12:26:03
独学なんてチグハグな知識の代名詞みたいなものなのに……
0584デフォルトの名無しさん2005/06/19(日) 13:21:10
IDEでしかプログラム作れない奴らって、
コンパイラの挙動が分かってないよな。
インクルードパスやライブラリパスなんて
コンパイラを直に使ってたら否が応でも
分からないとならないだろ。
0585デフォルトの名無しさん2005/06/19(日) 13:24:29
そうでもない。IDE利用の有無より、本人の素養や環境の問題だ.
0586デフォルトの名無しさん2005/06/19(日) 13:43:50
Linux環境でgccをコマンドから使っていても、
> インクルードパスやライブラリパスなんて
知らなくても何の問題もなく使えるが。
こういうことを言う人間ってリアルの方でも、
ろくに他の環境を知らないで、知ったかで適当をほざくんだろうなあ。
0587デフォルトの名無しさん2005/06/19(日) 14:21:54
アフォか。
gccでインクルードパスやライブラリパスを知らないで、問題が出てこないはずないだろ。
Hello worldでもコンパイルしてろ。
0588デフォルトの名無しさん2005/06/19(日) 14:25:02
それはIDEでも同じこと
0589デフォルトの名無しさん2005/06/19(日) 14:28:33
XファイルのAnimationKeyのアニメーションオプションに
オープン、クローズとあるのですが、何なんでしょうか?
検索しても、全く引っ掛からないし、対して重要で無い項目だったり
しますか?
0590デフォルトの名無しさん2005/06/19(日) 15:35:10
>>589
アニメーションがループするのか止まるのかの違いじゃね?
0591デフォルトの名無しさん2005/06/19(日) 15:37:25
>>587
恥の上塗りみっともない。
0592デフォルトの名無しさん2005/06/19(日) 15:55:35
>>590
Thanks
0593デフォルトの名無しさん2005/06/19(日) 20:53:59
パス知らないでgcc・・・?
おいらびっくりしたよ!
0594デフォルトの名無しさん2005/06/19(日) 21:11:10
その程度でびっくりできるなんて、無知だと毎日が斬新に思えるんだね。
0595デフォルトの名無しさん2005/06/19(日) 21:53:10
ジェネレーションギャップってやつ?
8インチFDを普通に使ってそう
0596デフォルトの名無しさん2005/06/20(月) 21:16:27
VC++.netでD3D9.hやd3dx9.hをインクルードするにはどうすればいいのですか?
0597デフォルトの名無しさん2005/06/20(月) 21:25:41
>>596
#include <d3d9.h>
0598デフォルトの名無しさん2005/06/20(月) 21:25:43
>>596
#include <d3dx9.h>
0599デフォルトの名無しさん2005/06/20(月) 21:37:39
>>596
すいません、言葉が足りませんでした。
ソースコードにそれを書くのはわかっているのですが、それを実行するためにVC++の設定をどうすればいいのか分かりません。
PCの環境は、DirectX9.0cが入っていて、VC++はインストールしたばかりです。
0600デフォルトの名無しさん2005/06/20(月) 21:58:29
適切なパスを設定すればいい。
0601デフォルトの名無しさん2005/06/20(月) 22:28:52
ネタスレにまで堕したか…
0602デフォルトの名無しさん2005/06/21(火) 00:57:52
>>599
先にVC++をインストールして、その後にDirectX SDKを入れる。
9.0cってのはランタイムだろ、どうせ。
0603デフォルトの名無しさん2005/06/21(火) 01:07:29
おまい、親切だな。
0604デフォルトの名無しさん2005/06/21(火) 07:03:11
>>599
そこからわからないなら入門書でも買ってしばらくは手順どおりに進めるほうがはやいじゃん。
それを買う金もおしいならプログラムなんて組むな。以上。
0605デフォルトの名無しさん2005/06/22(水) 15:30:28
どなたか>>508分かりませんか・・・?
0606デフォルトの名無しさん2005/06/22(水) 15:33:40
とりあえずDirectDrawを使わなければ幸せになれるよ。
0607デフォルトの名無しさん2005/06/22(水) 17:15:38
じゃんけんプログラムのmain関数の部分がわかりません。だれか教えてくださいm(_ _)m
0608デフォルトの名無しさん2005/06/22(水) 17:19:16
int main()
{ return Janken().run(); }
0609デフォルトの名無しさん2005/06/22(水) 17:22:16
>>608
void
main()
{
ここにいれるっぽいのですが
}
0610デフォルトの名無しさん2005/06/22(水) 17:23:41
自分の巣に帰れよ池沼
0611デフォルトの名無しさん2005/06/22(水) 17:27:58
#include <stdio.h>
int main()
{
printf("じゃんけんプログラム");
return 0;
}
0612デフォルトの名無しさん2005/06/22(水) 17:34:47
>>611
アザス!
0613デフォルトの名無しさん2005/06/22(水) 18:07:51
#include <stdio.h>
int main()
{
printf("じゃんけんしよう!\n入力してね グー:0 チョキ:1 パー:2\n");
int i;
scanf( "%d", &i);
printf("あなたの負けです\n");
return 0;
}
0614デフォルトの名無しさん2005/06/22(水) 18:37:49
>>613
テラワロスw
0615デフォルトの名無しさん2005/06/22(水) 18:39:14
>>613
Good Job!
0616デフォルトの名無しさん2005/06/22(水) 20:25:08
メタセコで作ったポリゴン(x)に2つ以上のテクスチャを張ってDirectXで表示したい場合、
テクスチャ別にポリゴンを分けてプログラム内でそれぞれ貼り付けていくのでしょうか?
0617デフォルトの名無しさん2005/06/22(水) 23:52:49
>>613
最強のじゃんけんプログラムとは、このことだったのですね!オモシロスw
0618デフォルトの名無しさん2005/06/23(木) 03:15:48
>>616
ループ回してプリミティブ単位で描画するから
毎ループSetTexture呼ぶ
つーかまずXファイルの表示とかやってみた?
06196162005/06/23(木) 08:03:55
レスありがとうございます。
dwNumMaterialsを把握せず
for( DWORD i=0; i<dwNumMaterials; i++ )
{
 lpD3DDevice->SetMaterial( &pMeshMaterials[i] );
 lpD3DDevice->SetTexture( 0, pMeshTextures[i] );
 pMesh->DrawSubset( i );
}
とやっていましたが、ここがキーなのでしょうか。
夜に色々試してみます。
0620デフォルトの名無しさん2005/06/23(木) 15:18:12
ポリゴンの拡大縮小とか
Lockして内容書き換えないとメモリ増えていくのでしょうか
今、上書きしてる状態で、作ったプログラムが(MCleanで見て)
徐々にメモリが増加してワラエナイッス
0621デフォルトの名無しさん2005/06/23(木) 15:34:45
ロックしなくても、行列でスケーリングをセットすれば済むだけだと思うが。
06226202005/06/23(木) 15:41:20
>>621
あ、そうでした。拡大は行列を触ればいいすね。

ではちょっと内容を変えて
拡大縮小とか −> 徐々に透明にする場合
ちなみにシェーダー使ってないんですよ。すんません。
0623デフォルトの名無しさん2005/06/23(木) 15:48:09
固定ならマテリアルを変更すればいいだけ。
06246202005/06/23(木) 17:27:26
なぞが解けた。解放忘れであった。
newしまくり。
で、プログラム見たら数週間前の
自分のプログラムをすっかり忘れてる。
0625デフォルトの名無しさん2005/06/23(木) 17:33:50
固定っていつまで続くんだろ
0626デフォルトの名無しさん2005/06/23(木) 17:33:55
そもそも確保し直す必要も毎回ロックする必要も無いんだって。
0627デフォルトの名無しさん2005/06/23(木) 19:54:25
>>625
固定パイプラインに相当する機能は永遠に必要。
ただし、D3DXの担当に変わる可能性は大きいけどな。
0628デフォルトの名無しさん2005/06/23(木) 20:35:55
WGF2.0あたりで変わりそうな希ガス
しかし消失サーフェスのチェックやらd3dcapsのチェックやら
という腐れ仕事はいつまでしなきゃいけないんだろう…
0629デフォルトの名無しさん2005/06/23(木) 22:10:48
WGF2.0でデバイスロストが無くなるから、それまでの辛抱
0630デフォルトの名無しさん2005/06/23(木) 22:50:40
ハードが行き渡るまで待ってなきゃならない人間にとっては5年は無理。
0631デフォルトの名無しさん2005/06/24(金) 08:05:43
http://www.watch.impress.co.jp/game/docs/20050308/wgf.htm
ここに「必要機能は全て実装されていることが前提」ってあるから、
dedcapsで機能調べたりってのはかなりなくなるんじゃね?
0632デフォルトの名無しさん2005/06/24(金) 14:04:45
DirectX7でアルファ成分を持っている32ビットのテクスチャを用意して、
徐々に緑(G)とアルファの値が0〜255になるようなものを作って
背景が真っ赤の画面に描画したのですが、徐々に黄色(背景と混ざった色)になってしまいます。
原因が思い当たる方いますか?ちなみに背景を黒にするとちゃんと表示されます。
0633デフォルトの名無しさん2005/06/24(金) 14:13:48
>>632
D3DRENDERSTATE_SRCBLEND, D3DRENDERSTATE_DESTBLENDの設定が悪い。
0634デフォルトの名無しさん2005/06/24(金) 14:42:28
>>632
ブレンドファクター121で ググる
0635デフォルトの名無しさん2005/06/24(金) 14:48:29
>>632
> 原因が思い当たる方いますか?ちなみに背景を黒にするとちゃんと表示されます。
                                  ~~~~~~~~~~~~~~~
マズ 赤背景の時に、どのように発色させたいかはっきりしよう。

> 徐々に黄色(背景と混ざった色)になってしまいます。
↑は、有る意味正しく動作しているんだヨ
0636デフォルトの名無しさん2005/06/24(金) 15:05:40
>>632
赤色の画用紙の上に緑色のセロハンテープ重ねて置いてみ。
何色に見える?

それで解からなかったら幼稚園児からやり直すといいよ。
06376322005/06/24(金) 16:17:33
みなさま、ご返答ありがとうございます。すみません。期待している動作は赤の背景にそのテクスチャを描画すると
赤(R255 G 0 アルファ値0)→暗めの黄色(R128 G128 アルファ値128)→緑(R0 G 255 アルファ値255)となるものです。

>>634さんから教えていただいた「ブレンドファクター121」を読んでみます。
0638デフォルトの名無しさん2005/06/24(金) 17:00:24
できました。ありがとうございました。
0639デフォルトの名無しさん2005/06/26(日) 17:23:29
DirectX9cのApril?では3D使うとDLLを1つ配布しないとダメでしたけど
Juneの奴も同じなのでしょうか?
0640デフォルトの名無しさん2005/06/27(月) 00:01:11
> DirectX9cのApril?では3D使うとDLLを1つ配布しないとダメでしたけど

はぁ?D3DXのDLLのことか?
DLLを単体で配布するほうがダメだ、ってM$が言ってるだろ
0641デフォルトの名無しさん2005/06/27(月) 00:07:29
それって、配布先ターゲットマシンにDirectX9c入って無いだけじゃないのかと。
0642デフォルトの名無しさん2005/06/27(月) 00:38:29
PC初心者かよ
0643デフォルトの名無しさん2005/06/27(月) 03:10:08
ttp://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A1=ind0506b&L=directxdev#2
ttp://www.microsoft.com/japan/msdn/directx/dxreadmej.asp

相変わらずファイルの単体配布は駄目だけど、条件付で再配布ファイルのバラ売りが
可能になったっつーことかね。よくわかんねーけど。

もうめんどくせーからOct2004止めしとこーぜぼくたち初心者くんは。
0644デフォルトの名無しさん2005/06/27(月) 03:28:49
9.0b止めしてるぜ
0645デフォルトの名無しさん2005/06/27(月) 13:23:52
VC6.0でDirectX SDK 9.0c の日本語ヘルプをF1で呼び出せるようにする方法はありますでしょうか?
DirectX9Oct04JpnDoc.msi は普通にインストしてもだめぽでした。(.NETにしか対応してないぽ・・。)
.NET買えってことですかね・・(´・ω・`)
06466392005/06/27(月) 18:48:19
>>640-643
あれ?DirectX9cのどれかのバージョンは
作ったゲーム配布するときDLLも添えないとダメでしたよね?
一般向けのDirectX9cランタイムに含まれていないから
どれかDLLもいっしょに配布しないと動かないと書かれていたはずです

これがJuneでは不要なのか
あいかわらずいっしょに配布しないと動かないのか
0647デフォルトの名無しさん2005/06/27(月) 20:08:37
おっと失礼
最新の一般向けDirectX9cランタイムには
全部のDLLが入ってることがわかりました
無事解決です
0648デフォルトの名無しさん2005/06/27(月) 20:42:20
んとねー。
Dec2004からはD3DXが性的ライブラリからDLLに変わったんだよねー。
これでちょっとD3DXのコード呼び出しただけで数百KBも実行ファイルサイズ増しなんてことが
無くなってみんな幸せになるかと思いきや、エンドユーザー向けの9.0cラインタイムには
Dec2004以降のSDKで開発したプログラムを動かすためのファイルが一部入ってないわけよー?
実際には足りないといってもD3DXのDLLファイル(d3dx_24.dllとかd3dx_25.dll)を
直接実行ファイルの隣に置いておけば動くんだけどー、なんかそれってライセンス的に完全にアウトなわけよー。
じゃどーすんだと言えばー、それぞれのSDKに付いてる再配布用のランタイムのインストーラである
DXSetup様御一行を添付しなきゃならないわけよー。40MB近くあったっけこれー?
マジ勘弁しろよって感じだったんだけどー、June2005ではDXSetupで再配布しなきゃならないのは
相変わらずだけど、インストーラのコアだけ残しておけば必要なファイルだけを添付するのが可能になったわけだー。
D3DXの更新のみ必要な場合は4MB程度の添付で済むわけだー。


そんな文章書いていたんですけど
>>647
マジでー? 去年の8月から日付変わってねーのに。これ(↓)のことじゃないっスよね?
http://www.microsoft.com/downloads/details.aspx?FamilyID=3ad9f0d1-8d81-40c8-9815-924dcd4cd2c5&DisplayLang=en
0649デフォルトの名無しさん2005/06/27(月) 20:44:28
>>648
性的ライブラリのままの方が良かった。
0650デフォルトの名無しさん2005/06/27(月) 20:52:52
卑猥な人たちですね。
0651デフォルトの名無しさん2005/06/28(火) 20:53:43
テクスチャを自分で読み込むにはどうしたらいいですか?
OpenGLだと自分で勝手にフォーマット決めて読み込んでいたのですが…
DXだとD3DXでしかLPDIRECT3DTEXTUREを作れないんですか?
0652デフォルトの名無しさん2005/06/28(火) 21:45:54
CreateTexture
Lock
0653デフォルトの名無しさん2005/06/29(水) 04:47:23
テクスチャフォーマットを無視してtexture::lockで書き込み、意図した結果が得られない悪寒。
とりあえずD3DFMT_A8R8G8B8 にしてLockしたら A<<24|R<<16|G<<8|B で書き込んどけ。
■ このスレッドは過去ログ倉庫に格納されています