【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/
0492486
2005/06/13(月) 16:33:06>>491
489氏のレスみてテクスチャ座標を0.5テクセルずらしたらSetTextureStageStateの
D3DTEXF_NONE時の表示がだいぶマシになりました。
後はD3DXCreateTextureFromFileを使ってるのでご指摘の通りかと思われます。
D3DXCreateTextureFromFileはCodeGuruのサンプルをそのまま使ってた
だけなので、これをCreateTextureに置き換えてみます。
回答有難うございました。
ノシ
0493デフォルトの名無しさん
2005/06/13(月) 16:50:44D3DXCreateTextureFromFileExを使え。
0494486
2005/06/13(月) 17:41:01今ちょっとやってみたらテクスチャが縦横に妙に縮小されて取りこまれてしまいました…
こう↓書いてたのを
D3DXCreateTextureFromFile( g_pd3dDevice, fname, &g_pTexture[num] );
このように↓変えただけなのですが…
D3DXCreateTextureFromFileEx(g_pd3dDevice, fname, 0, 0, 0, 0,D3DFMT_UNKNOWN,
D3DPOOL_DEFAULT,D3DX_FILTER_NONE,D3DX_FILTER_NONE,
0,NULL,NULL,&g_pTexture[num]);
読んでるファイルは640x480の24bppのBitmapで、D3DXCreateTextureFromFileExの
引数にサイズを指定したりフォーマットにD3DFMT_R8G8B8を指定しても同じでした。
ちょっと自力で調べてみます
D3Dッテムズカシイ('A`;)
0496デフォルトの名無しさん
2005/06/13(月) 19:17:180497デフォルトの名無しさん
2005/06/13(月) 19:43:58テクスチャ座標を1.0にしてない?
たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
1024*512のテクスチャが作成されている。
D3DXCreateTextureFromFileExの後にサーフェスのサイズからテクスチャ
座標を計算する必要がある。
(1024*512と決め打ちするなら、640/1024,480/512をテクスチャ座標に)
0498486
2005/06/13(月) 20:15:23できました!
座標直したらドット単位くっきりな画像が表示できました。
今しばらく勉強してみます。
皆さん有難う。( ´∀`)ノシ
>たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
>1024*512のテクスチャが作成されている。
この動作知りませんですた。サイズは512Pixel毎?
手持ちのDX9ヘルプにも見当たらないような…
0499デフォルトの名無しさん
2005/06/13(月) 20:19:390500デフォルトの名無しさん
2005/06/13(月) 20:32:55つ● ウンコドゾー
0501デフォルトの名無しさん
2005/06/13(月) 20:34:15ネットを見てもファイルを再生する方法はよくありますが、そうではなく、その時々で任意の音を出したい
のですがどなたかご存知ではないでしょうか。よろしかったら教えてください。
0502デフォルトの名無しさん
2005/06/13(月) 20:37:27WAV データを自前で生成しつつ再生すればいいと思う。
ストリーミング再生の資料は多少はネット上に落ちてる筈。
0503デフォルトの名無しさん
2005/06/13(月) 20:40:05本当にありがとうございます!!さっそく調べてみます。
0504482
2005/06/13(月) 21:12:42SetViewport()をやるときに、
D3DVIEWPORT8構造体のMinZとMaxZに値を入れてませんでした。
ありがとうございました。
0505デフォルトの名無しさん
2005/06/13(月) 21:18:39テクスチャは2のN乗サイズになる。3D屋なら常識だが、
ちゃんとヘルプにも書いてある。
Width [in] Width in pixels. If this value is zero or D3DX_DEFAULT,
the dimensions are taken from the file and rounded up to
a power of two. If the device supports non-power of 2 textures
and D3DX_DEFAULT_NONPOW2 is specified, the size will not be rounded.
0506デフォルトの名無しさん
2005/06/14(火) 15:33:57だれかもしえてください。
0507デフォルトの名無しさん
2005/06/14(火) 16:14:05Helpに書いてあります。残念。
0508デフォルトの名無しさん
2005/06/15(水) 14:40:35DDBLT_KEYSRCフラグでBltするとMillennium G450では正常に表示されるのに、
NVIDIA GeForce FX 5700だと正常に表示されなくなります。
解像度やカラー深度は一緒です。ちなみにBlt関数ではS_OKが帰ってきます。
また、DDSCAPS_OFFSCREENPLAINでサーフェスを作成したり、
カラーキーを無効にするときちんと表示されます。
このような経験がある方がいたら教えてください。
0509デフォルトの名無しさん
2005/06/15(水) 19:04:380510デフォルトの名無しさん
2005/06/15(水) 22:43:45そうです。R5G5B6のピクセルフォーマットにしたがって指定しています。
サンプルにあったように取得したサーフェスの左上にカラーキーにしたい色味を描画して、
Lockしてメモリを読み出し、実際に描かれた色味を指定しています。
DDSCAPS_TEXTUREフラグで作成したサーフェスに対して、カラーキーを含むBltのみが
おかしいようです。
ちなみにドライバを更新したときに、拡大Blt(転送先矩形が、転送元矩形より大きいBlt)で
カラーキーが境界部分で表示されてしまうバグが解消されたくらいなので、
テクスチャとして作成したサーフェスが転送元となるBltは想定していないのかもしれません。
戻り値にS_OKは返してほしくないですね・・・。
0511デフォルトの名無しさん
2005/06/15(水) 22:44:190512デフォルトの名無しさん
2005/06/15(水) 22:46:340513デフォルトの名無しさん
2005/06/15(水) 23:35:35?!
R5G5B5とかR5G6B5じゃなくてか?
プライマリサーフェスのCapsを確認してみ
0514デフォルトの名無しさん
2005/06/16(木) 00:31:430515デフォルトの名無しさん
2005/06/16(木) 02:21:18if( 0 > ( m_Trees[i].vPos.x - m_vEyePt.x ) * g_vDir.x +
( m_Trees[i].vPos.z - m_vEyePt.z ) * g_vDir.z )
DirectXサンプル、ビルボードの引用なんですが、
カメラ位置から木の位置までのベクトルの正規化なしで、
内積取っても、前後判定できないような気がするのですが。
0516デフォルトの名無しさん
2005/06/16(木) 02:41:08必要な情報は内積の結果の符号のみだから、
ベクトルの大きさは関係ない。
一度図と式を書いて確認しとくといいよ。
0517デフォルトの名無しさん
2005/06/16(木) 03:30:01そうじゃなきゃ一からベクトル勉強し直せって感じだが
0518デフォルトの名無しさん
2005/06/16(木) 03:43:11P・Q=|P||Q|cosα をもう一度よくじっくり考えてみよう。
ベクトルの大きさによらず、結果が正か0か負かだけで分かることがあるよな?
0519デフォルトの名無しさん
2005/06/17(金) 13:36:44CreateTextureで空のテクスチャを作った後で、これに画像をBITMAPハンドルから
読ませる方法がわかりません
GetDCは無いし…
これを実現するAPI名を教えて下さい
0520デフォルトの名無しさん
2005/06/17(金) 13:47:52つ[LockRect]
0522デフォルトの名無しさん
2005/06/18(土) 13:42:30どれを入れてもプログラムファイル内に『Microsoft DirectX 9.0 SDK (June 2005』などといったフォルダしか作られません。
これらだとヘッダーファイルの一部が見つからなかったり、コンパイルができても
Direct3D9: (ERROR) :Unsupported min filter.
Direct3D9: (ERROR) :Invalid texture sampler state value. SetSamplerState failed.
のようなエラーが出てしまいます。
落とすファイルを間違えているのでしょうか?
0523デフォルトの名無しさん
2005/06/18(土) 13:46:23いつの時代の人ですか・・・
0524522
2005/06/18(土) 14:55:48今まで9.0bをベースにupdateを加えていったので環境としては9.0cになっていると思うのですが、その大元のファイルがどこにあるのか・・。
0525デフォルトの名無しさん
2005/06/18(土) 15:14:48文字すら読めないのなら諦めた方がいい。
0526デフォルトの名無しさん
2005/06/18(土) 15:15:09何を言ってるのかよく分からんのだが、SDKをどこのフォルダに
インストールしたのか自分で分からんってこと?
0527522
2005/06/18(土) 15:22:10>Direct3D9: (ERROR) :Unsupported min filter.
>Direct3D9: (ERROR) :Invalid texture sampler state value. SetSamplerState failed.
>のようなエラーが出てしまいます。
です。
バージョン違いでコンパイルができないのならそのエラーが起きている関数を変えることで直すことができますが、今回(上記)のようなのはどうしたらいいのか分からず質問しにきました。
0528デフォルトの名無しさん
2005/06/18(土) 15:25:34VS入ってんなら自動的にパスも設定してくれるはずだ。たぶん。
0529522
2005/06/18(土) 15:27:49今まではCドライブ直下にあるSDKのフォルダの中にあるincludeとlibだけを指定するだけで問題なくコンパイル→実行ができました。
June 2005のinclude・libフォルダだけだと一部のヘッダーファイルが見つからない、Summer 2003を加えると上記のエラー。
0530デフォルトの名無しさん
2005/06/18(土) 15:28:22だからバージョンが変わったから関数の使い方が変わっただけじゃないの?
ヘルプ見て見たら?
別にファイルが無いよとかそんなこといってないんじゃない?
0531デフォルトの名無しさん
2005/06/18(土) 15:34:52OSを再インスコ、June2005をインスコ。
これで万事解決。SetSamplerStateのエラーはどっかの過去Verで引数の数が変わったんだろう
0532522
2005/06/18(土) 15:36:060533デフォルトの名無しさん
2005/06/18(土) 15:44:000534デフォルトの名無しさん
2005/06/18(土) 15:44:409.0cの頃からlibフォルダやincludeフォルダは
C:\Program Files\Microsoft DirectX 9.0 SDK (リリース年月)\Include
C:\Program Files\Microsoft DirectX 9.0 SDK (リリース年月)\Lib
に変わったから
0535522
2005/06/18(土) 16:02:37それをやった結果が現状・・。
>>534
それを設定してますが今までは問題なかったのに今回は(略
>>533
[Lib]
└x64
└x86
この2つのフォルダの中にファイルは確かにあります。
0536デフォルトの名無しさん
2005/06/18(土) 16:12:09だからVCのパスの設定の仕方がわかんねーんだろ?
↓でも行って来い
すれ立てるまでもない質問はここで 第67刷
ttp://pc8.2ch.net/test/read.cgi/tech/1114329636/l50
0537522
2005/06/18(土) 16:43:16分からないというほうが問題としては簡単なんですがね(´・ω・`)
一体何が原因なんだろ、03夏を入れて出てくるエラーの内容もさっぱりだし。
0538デフォルトの名無しさん
2005/06/18(土) 16:57:13な ん で 0 3 夏 を 入 れ る ?
0539522
2005/06/18(土) 17:01:28そうしないとコンパイルが通らないからですよ(´・ω・`)
後者のエラーについてはSetSampleStateが原因でした。
終了時にreturn (INT)msg.wParam;を実行すると
Direct3D9: (ERROR): [0] : Address 00000000 ←16進
[1]
:
:
と出力コマンドに表示され続けて終わらなくなりました。
直接実行させると問題なく終わりますが、デバッグだけ・・メモリの開放ミスでしょうか?
0541デフォルトの名無しさん
2005/06/18(土) 18:05:33該当部分を修正すればいいだけの話だろ。
何故直さない?
0543デフォルトの名無しさん
2005/06/18(土) 18:18:38それはお前が馬鹿だからだろ(´ω`)
0544デフォルトの名無しさん
2005/06/18(土) 18:24:07つ[【C++】 DirectX初心者質問スレ Part4【C++】]
0545デフォルトの名無しさん
2005/06/18(土) 18:33:230546522
2005/06/18(土) 18:59:49って言われても(´・ω・`)
>>545
バージョンを前にすると通るからJune2005の問題かなと思っているのですが、VC++の問題なのでしょうか。
0547デフォルトの名無しさん
2005/06/18(土) 19:09:30だからパスを設定しろ。
VC++ ディレクトリって言葉知ってるか?
0549デフォルトの名無しさん
2005/06/18(土) 19:36:200550デフォルトの名無しさん
2005/06/18(土) 19:40:26バカも休み休み言え
0551デフォルトの名無しさん
2005/06/18(土) 19:43:400552デフォルトの名無しさん
2005/06/18(土) 19:45:500553デフォルトの名無しさん
2005/06/18(土) 20:04:05535で気付いてほしいものだが
0554522
2005/06/18(土) 20:31:02ありがとうございます、原因はそれだったようで○| ̄|_
フォルダを指定したら自動的に判断してくれているものと思ってましたが、自分で決めないといけないとは・・。
>>551
そのまま指定すると絶対パスになりますが今まで不具合が出たことがありません。
相対パスにしないと何か問題が起きるのでしょうか?
0555デフォルトの名無しさん
2005/06/18(土) 20:50:180556デフォルトの名無しさん
2005/06/18(土) 21:00:470557デフォルトの名無しさん
2005/06/18(土) 21:05:17レアなもん見れたと思えばいいじゃん
0558デフォルトの名無しさん
2005/06/18(土) 21:10:00547と553の意味は別々だろ
混同してたらお前も522と同類
0559デフォルトの名無しさん
2005/06/18(土) 21:46:14単なる三角形を表示するだけのサンプルを改良して
三角形を二つ表示するプログラムが作りたいと思い
変数を追加して、少し座標をずらして表示させてみたところ
後に追加したほうの三角形しか表示されません
試行錯誤の結果
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あくまで”DirectXのlibファイルの場所"を勘違いしてたってことでVCの設定の仕方が分からなかったわけじゃないみたいだし
DirectX初心者に優しくないなこのスレ
0561559
2005/06/18(土) 21:51:26SetStreamSource(一つ目のデータ
SetFVF
DrawPrimitive
2つ目
SetStreamSource(2つ目のデータ
SetFVF
DrawPrimitive
とすることで解決しました、すみません
0562デフォルトの名無しさん
2005/06/18(土) 21:56:45わかってなかったわけでもないだろ。
ただの確認不足。
頑なに自分の間違いを疑わず、
こうなるはずだ。等と思い込みで勝手に突き進んでたのが問題。
こういう馬鹿は成長しても結局同じ事を何度も繰り返す。
ここで潰しておいた方がよかった。
0563デフォルトの名無しさん
2005/06/18(土) 22:02:54確認したら俺の持っている本は全部IncludeフォルダとLibフォルダを指定するとしか書いていないぞ。
0564デフォルトの名無しさん
2005/06/18(土) 22:06:04なにがいいてぇんだ?
0565デフォルトの名無しさん
2005/06/18(土) 22:12:050566563
2005/06/18(土) 22:17:23語弊があったかもしれんが、なぜSDKディレクトリの登録をしなければいけないのかやそれをすることによってどういう働きをするのか書かれていない。
そこから始める人にその時点で覚えさす必要はないが、書かれていない以上IncludeとLib両フォルダを登録しなければならないとだけ覚えていれば十分だと思う。
0567デフォルトの名無しさん
2005/06/18(土) 22:18:180568デフォルトの名無しさん
2005/06/18(土) 22:22:23いつまで初心者でいるつもりだ?w
0569デフォルトの名無しさん
2005/06/18(土) 22:25:18同じく自動的にパスの設定をしてたってことはないな。
ちなみに.NET。
0570デフォルトの名無しさん
2005/06/18(土) 22:32:11それとも初心者が出を出してしまった結果がアレなのか
0571デフォルトの名無しさん
2005/06/18(土) 22:34:06インストールし直すと再びパスが設定し直されていた。
0572デフォルトの名無しさん
2005/06/18(土) 22:45:17アプリを作って公開し、叩かれたらやっと脱・初心者( ´ー`)y―┛~~
>>565
2台のPCで確かめたら1台は設定されたがもう一台は変化なし。
>>571をやってみたが設定されなかったほうは再び設定しなおされることがなかった。
0573デフォルトの名無しさん
2005/06/18(土) 22:46:27PC初心者とDirectX初心者の違いもわからないのか?
0574デフォルトの名無しさん
2005/06/18(土) 22:50:47PC初心者ならわかるが、DirectXに手を出すってことは当然通常の(?)プログラミングは知っていて
当然インクルードパスやライブラリパスなんて知ってるだろ。
0575デフォルトの名無しさん
2005/06/18(土) 22:53:06学校である程度プログラムを習ったからゲームを作ってみたいとか考えてる輩は知ってて当然とはいいがたいな
最近は昔と違って随分敷居が低くなってるからその辺の当然を求めるのはどうかと思うぞ
0576デフォルトの名無しさん
2005/06/18(土) 22:56:46昔はどういう順序でプログラミングに入っていったんだろ。
0577デフォルトの名無しさん
2005/06/19(日) 00:42:120578デフォルトの名無しさん
2005/06/19(日) 00:46:070579デフォルトの名無しさん
2005/06/19(日) 00:47:45またすごい釣り師が来たな
0580デフォルトの名無しさん
2005/06/19(日) 01:22:430581デフォルトの名無しさん
2005/06/19(日) 01:47:32Javaすっ飛ばしていきなりiアプリ始めたりするやつはいるわけで、
それ自体は悪いことではなかろう。パラシュート勉強法なんて言葉もあったが。
0582デフォルトの名無しさん
2005/06/19(日) 11:30:480583デフォルトの名無しさん
2005/06/19(日) 12:26:030584デフォルトの名無しさん
2005/06/19(日) 13:21:10コンパイラの挙動が分かってないよな。
インクルードパスやライブラリパスなんて
コンパイラを直に使ってたら否が応でも
分からないとならないだろ。
0585デフォルトの名無しさん
2005/06/19(日) 13:24:290586デフォルトの名無しさん
2005/06/19(日) 13:43:50> インクルードパスやライブラリパスなんて
知らなくても何の問題もなく使えるが。
こういうことを言う人間ってリアルの方でも、
ろくに他の環境を知らないで、知ったかで適当をほざくんだろうなあ。
0587デフォルトの名無しさん
2005/06/19(日) 14:21:54gccでインクルードパスやライブラリパスを知らないで、問題が出てこないはずないだろ。
Hello worldでもコンパイルしてろ。
0588デフォルトの名無しさん
2005/06/19(日) 14:25:020589デフォルトの名無しさん
2005/06/19(日) 14:28:33オープン、クローズとあるのですが、何なんでしょうか?
検索しても、全く引っ掛からないし、対して重要で無い項目だったり
しますか?
0590デフォルトの名無しさん
2005/06/19(日) 15:35:10アニメーションがループするのか止まるのかの違いじゃね?
0591デフォルトの名無しさん
2005/06/19(日) 15:37:25恥の上塗りみっともない。
■ このスレッドは過去ログ倉庫に格納されています