【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/
0421デフォルトの名無しさん
2005/06/06(月) 20:27:150422デフォルトの名無しさん
2005/06/06(月) 20:31:140423デフォルトの名無しさん
2005/06/06(月) 20:34:51ベータ初期しか試してないが、多少は良くなったのかね
0424デフォルトの名無しさん
2005/06/06(月) 20:35:560425デフォルトの名無しさん
2005/06/06(月) 21:25:220426デフォルトの名無しさん
2005/06/06(月) 21:28:26国や組織によっても認識が違ってたりするからなぁ。
0427デフォルトの名無しさん
2005/06/06(月) 21:32:38どこでも
0428デフォルトの名無しさん
2005/06/06(月) 21:40:547.1でも部分特殊化はイマイチだ
8買っちゃうかも。
0429デフォルトの名無しさん
2005/06/06(月) 23:27:390430デフォルトの名無しさん
2005/06/07(火) 00:59:520431デフォルトの名無しさん
2005/06/07(火) 01:14:220432デフォルトの名無しさん
2005/06/07(火) 03:41:510433デフォルトの名無しさん
2005/06/07(火) 10:22:573〜4万円くらいで乗り換えれたよ。VBやVJ等でも可。
もう1年前にキャンペーン終わってしまったが。
0434デフォルトの名無しさん
2005/06/07(火) 11:45:360435デフォルトの名無しさん
2005/06/07(火) 11:55:560436デフォルトの名無しさん
2005/06/07(火) 13:08:04「ディテール」を「ディティール」とかいうバカも気に入らない。
0437そもそもカナで表記することが(ry
2005/06/07(火) 14:16:50「ディテイル」もしくは「ディーテイル」
0438デフォルトの名無しさん
2005/06/07(火) 14:50:500439デフォルトの名無しさん
2005/06/07(火) 15:48:260440デフォルトの名無しさん
2005/06/07(火) 16:26:16ディティールが違うんだよディティールがフォー
0441デフォルトの名無しさん
2005/06/07(火) 16:29:190442デフォルトの名無しさん
2005/06/07(火) 19:43:14自作自演で質問ゴッコするスレ
0443デフォルトの名無しさん
2005/06/09(木) 22:30:560444デフォルトの名無しさん
2005/06/10(金) 14:15:250445デフォルトの名無しさん
2005/06/10(金) 17:16:580446デフォルトの名無しさん
2005/06/11(土) 01:30:39パフォーマンスは気にしたほうがいい。
0447デフォルトの名無しさん
2005/06/11(土) 01:39:090448デフォルトの名無しさん
2005/06/11(土) 01:43:530449デフォルトの名無しさん
2005/06/11(土) 02:00:360450デフォルトの名無しさん
2005/06/11(土) 02:08:36「vectorの要素数が上限を超えると」だろ。
要素が変化するごとに再アロケートなんかおきてたらスパコンでも使えんわそんなもん。
0451デフォルトの名無しさん
2005/06/11(土) 02:22:21毎回起きるわけでもないみたいだけど。
0452デフォルトの名無しさん
2005/06/11(土) 02:30:48効率気にするなら reserve しときゃええ話やね。
0453デフォルトの名無しさん
2005/06/11(土) 04:29:11文字やグラフィックを表示することはできますか?
0454デフォルトの名無しさん
2005/06/11(土) 07:19:040455デフォルトの名無しさん
2005/06/11(土) 10:39:280456デフォルトの名無しさん
2005/06/11(土) 12:55:38http://gamdev.org/up/img/2757.zip
以下の内容を100万回施行
移動して、徐々に透明になる事を想定してのプログラムです。
1、テクスチャを描画、板ポリを生成、描画
2、板ポリ生成、描画
3、板ポリ描画
4、板ポリ描画(Lock版)
だいたい速度が同じなのですよね。
作り方がおかしいのでしょうか?
それとも、こんなもんなのだろうか・・・
Effective C++見るとみるからに変わってるんですがね
0457456
2005/06/11(土) 19:28:58もしや、クラッシュさせてしまったのかっ!!
0458デフォルトの名無しさん
2005/06/11(土) 20:03:11VSync待ってたりして。
0459デフォルトの名無しさん
2005/06/11(土) 21:14:47最適化を有効にして実行してみた。
北森2.8 RADEON9600XT DirectX9 april
VC6
Time1 31074
Time2 30790
Time3 6088
Time4 6853
VC7.1
Time1 30740
Time2 30578
Time3 6297
Time4 6667
0460デフォルトの名無しさん
2005/06/11(土) 21:30:300461デフォルトの名無しさん
2005/06/11(土) 22:01:06AthlonXP2500+ Radeon9600np DirectX9 april
VC7.1
Time1 29627
Time2 30479
Time3 10981
Time4 10163
0462デフォルトの名無しさん
2005/06/11(土) 23:18:24Pen4 1.8GHz Radeon9600 SERIES
VC6
Time1 46553
Time2 46654
Time3 11250
Time4 11690
0463456
2005/06/12(日) 02:18:56結果が大きくちがいますね。なんでだろう。
Athlon1.8GHz Geforce256で 一律4000でした。
プログラムは問題なさそう。なのか?
1,2は
リスト構造の中に予めVertexBufferを入れるか
描画する時にだけVertexBufferを生成するかどうか
(クラスの設計をどうしようかと考えていたので)
3,4は
データを上書きするのと
Lockしてデータを書き換えるのとは
どっちがパフォーマンスがいいのか?というのが目的です。
メモリの問題はとりあえず後回しとして。
実行してくれた方々ありがと〜。
0464456
2005/06/12(日) 02:28:460465デフォルトの名無しさん
2005/06/12(日) 03:39:07NVPerfHUDでパフォーマンスを解析したほうがいい。
ビデオカードは買わないとダメだけど効果は大きい。
使い方のムービーあるから見てみるといい。
0466デフォルトの名無しさん
2005/06/12(日) 12:13:10やっぱグラボって重要なんだね…
0467デフォルトの名無しさん
2005/06/12(日) 17:29:15起動した瞬間固まる。。。
Win2000、RADEON9100、1GB
0468デフォルトの名無しさん
2005/06/12(日) 17:31:42それ、重すぎて画面に表示できてないよ。
数分経つと正常に終了するから
0469デフォルトの名無しさん
2005/06/12(日) 19:55:52終了するようになってます。
0470デフォルトの名無しさん
2005/06/12(日) 21:59:19DirectXのサンプルと、VisualC++.netなどでDirectXのプログラムを起動させると、
「Switching the Direct3D reference rasterizer, a software device that implements the entire Direct3D feature set, but runs very slowly. Do you wish to continue?」
とテキストボックスが出現した後FPS0.1というとても遅い速度でしか動きません。
以前はスムーズに動いたはずなのですが。。。
あるとすれば、キチンと動いたときからパソコンを初期化してメモリ増やしたくらいしか。。。
どなたかご教授おねがいいたします。
スペック
Dellノートパソコン
Pentium2.66GHz
メモリ640
開発環境
VisualC++.net
DirectX SDK 9.0(june 2005)
0471デフォルトの名無しさん
2005/06/12(日) 22:02:57まずエラー文をちゃんと読もう、な!
0472デフォルトの名無しさん
2005/06/12(日) 22:03:02そのメッセージをexcite翻訳すると
>Direct3D参照ラスタライザを切り換えて、全体のDirect3Dの特徴を実装するソフトウェアデバイスは、非常にゆっくりセットしますが、動きます。 あなたは続きたいですか?
ノートパソコンの時点でまさかとは思うが、ビデオカードが無いとか言わないよな?
0473デフォルトの名無しさん
2005/06/12(日) 22:09:34以前はちゃんと動いてたので多分問題は他にもあるかと思います。
0474デフォルトの名無しさん
2005/06/12(日) 22:13:29コンパネからDirect3Dの設定を変えてみるとか。
0475デフォルトの名無しさん
2005/06/12(日) 22:18:56DX9の同じサンプルでだよな?
0476デフォルトの名無しさん
2005/06/12(日) 22:32:44今色々試してはいるんですが、変化が無い感じです。
>>475
そうです。同じサンプルで動作が遅いという現象が出てます。
やっぱり、ビデオカードの問題なんでしょうか(^^;
ところで、DLしたのって、
Microsoft DirectX 9.0 SDK Update (June 2005)
のみなんですけど、これってUpdateのみだから、DirectX 9.0b SDK (2002)
が必要ってわけじゃないですよね?
あと、診断ツールのDirectXファイルで
「いくつかのファイル (d3d9d.dll、Microsoft.DirectX.Direct3DX.dll) はデバッグ版です。製品版より遅く動作します。」
と出ましたが、これって影響ないんでしょうか?
0477デフォルトの名無しさん
2005/06/12(日) 22:38:58だからコンパネでDirect3Dの設定を変えてみなよ。
Emulate reference rasterizer
とかの項目を切り替えたり、Debug/Rereaseモードを切り替えたり。
0478470
2005/06/12(日) 22:52:51やっぱり、ノーパソでやること自体が無謀なんでしょうか(^^;
0479デフォルトの名無しさん
2005/06/12(日) 23:09:210480470
2005/06/12(日) 23:15:55ご教授ありがとうございました。
再度一人でがんばってみます(^^
0481デフォルトの名無しさん
2005/06/13(月) 01:36:070482デフォルトの名無しさん
2005/06/13(月) 11:46:56SetRenderState(D3DRS_ZENABLE, TRUE)は書いてるんですけど、
これ以外にも何か必要なものとかあるんでしょうか?
0483デフォルトの名無しさん
2005/06/13(月) 11:55:430484デフォルトの名無しさん
2005/06/13(月) 12:28:42単に精度の問題とかじゃ?
0485482
2005/06/13(月) 12:39:33を書いてもだめでした。
0486デフォルトの名無しさん
2005/06/13(月) 15:02:04「画面一杯に1枚絵を表示」する方法の質問です。
クライアント領域640x480のウィンドウに同サイズのテクスチャを
画面ぴったりに表示させようとしています。
で、表示自体は出来たのですが、各ドットが補完されボケて表示されて
しまいます。
SetTextureStageStateでD3DTEXF_NONEやD3DTEXF_POINTを指定すると
ボケた上に端々が汚く、D3DTEXF_LINEARだと綺麗だけどやはりボケます。
(↑これは当たり前ですが)
補完無しでくっきりと表示させる方法を教えて下さい。
orz オナガイシマス
0487デフォルトの名無しさん
2005/06/13(月) 15:24:56orzとかオナガイシマスとか、いい加減恥かしくないですか。
礼儀というものを知らないのですか。
いつからそういったものを覚えたのですか。
そういうノリだと誰かが教えてくれると思ったのですか。
0488デフォルトの名無しさん
2005/06/13(月) 15:29:530489デフォルトの名無しさん
2005/06/13(月) 15:50:44勝手にイメージが拡大されるのを知らないってオチが大半やねこの場合。
あとは頂点座標を-0.5ピクセル分ずらすとか、UV座標を+0.5テクセル分ずらすとか。
0490デフォルトの名無しさん
2005/06/13(月) 15:53:50ID3DXSpriteの存在を本気で忘れてました
単純な矩形表示ならこっちの方が相応ですな…
ちょっと調べてみます。マリガトウ
>>487
つ● ウンコドゾー
0491デフォルトの名無しさん
2005/06/13(月) 16:21:32射影行列のZnをいくつにしてる?
>>490
せっかくいい線まで行ってるんだから、ID3DXSpriteなんて使うな。
原因はたぶん489の言う通り。
描画以前に読み込み時にテクスチャがボケてる。
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]
■ このスレッドは過去ログ倉庫に格納されています