トップページ⇒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/
0404デフォルトの名無しさん2005/06/06(月) 07:50:37
>>403
俺のレスが気に入らないならスルーすればいいだけ。
嫌なら相手にしなくて結構。
懐古ってわけじゃないけど、昔は質問への回答なんてそこまで重要なことではなく
むしろ勉強するにあたっての姿勢を大事にする傾向があった。
どのぐらい頑張れば自分のめざすことができるようになるんだろうとか
そういうのが回答からわかった。
ゲームPGの技術力の高さは掲示板でそういうところまで
面倒を見てくれるところで支えていたと思うんだけどね。

ところがこの質問スレはそういうのがないから、最近の初心者は損をしてると思うんだよね。
俺が先人(主にPS世代の人かな)から受け継いだものなんて、そんなものだけど
お前等がいらないっちゅーなら、それもアリだな。と思う。
初めて何ヶ月目か知らんけど、カワイそうだけどこんなペースじゃ一生かかっても俺にはおいつけないだろうな。
俺等の頃にあって、今無いものの差はかなりでかいぞ。
0405デフォルトの名無しさん2005/06/06(月) 08:19:18
全角英数字使う自称プログラマは、高確率でワナビーの法則

説教好きが2ch全体に増えている
これはこのスレに限った事じゃない
0406デフォルトの名無しさん2005/06/06(月) 08:26:59
純粋にQ&Aだけをしたい人はこちらへどうぞ

2D!!のDirectXをやってみるかもな
http://pc8.2ch.net/test/read.cgi/gamedev/1005133911/
0407デフォルトの名無しさん2005/06/06(月) 08:52:38
お偉い先人から何かを受け継ぐと404みたいにキチガイになってしまうのですね。
受け継がなくて良かったです。というか何を受け継いだのでしょうか。
404の書き込みから何が伝わってくるのでしょうか。
伝わってくるのは間違いなく404はキチガイであるということだけです。
ここは404なんぞいなくても今まで通り粛々と進んでゆきます。
さようなら404。
0408デフォルトの名無しさん2005/06/06(月) 09:54:55
>>404
ここは質問スレだ。質問と回答以外必要ねーんだよ。
なにが「スルーすればいいだけ」だよ。
テメェがスレ違いなどうでもいい昔話をご高説なさってるから邪魔だって言ってんだよアホ。
背中に「↑バカ」って張り紙されてるタイプだよお前w
0409デフォルトの名無しさん2005/06/06(月) 11:00:44
ここは聞く奴も馬鹿なら
答える奴も馬鹿で結構バランスとれてるよ。
0410デフォルトの名無しさん2005/06/06(月) 11:22:29
雑談の時だけ加速するッ

ちょっと気になる流れだったから話戻していい?
Summer2004以降はVC6はサポート外になったけど、
ExtrasのVC6用D3DXファイルに差し替えればとりあえず動くよね。
今はVC6+Oct2004にしてるんだけど、なんか問題あるかしら?
海外サイト見ると一応イケるっぽいんだけど・・・
0411デフォルトの名無しさん2005/06/06(月) 12:14:55
サポート外の物にサポートを期待するな。
0412デフォルトの名無しさん2005/06/06(月) 12:44:07
期待はしてないよ。
ただ、わざわざVC6用のファイルを残しているから
完全に切り捨てたというより互換性を気にしなくなっただけなのかな、と思ってね。
回避できない致命的な問題がなけりゃそれでいいの。
0413デフォルトの名無しさん2005/06/06(月) 17:31:40
VC6を未だに使い続ける理由ってなんだ?
0414デフォルトの名無しさん2005/06/06(月) 18:04:49
>>413
.net無駄に重くね?
0415デフォルトの名無しさん2005/06/06(月) 19:02:06
vc6で何も困ってないんだけど。
逆に.netにしなきゃいけない理由って何。
0416デフォルトの名無しさん2005/06/06(月) 19:21:25
エディタの性能がいい
0417デフォルトの名無しさん2005/06/06(月) 19:41:57
>>415
インテルコンパイラ用の最適化機能と新規格の準拠度
0418デフォルトの名無しさん2005/06/06(月) 19:54:41
VC6 は new が NULL 返すのがなぁ...。
STL 等のライブラリは new が bad_alloc 投げることを前提にしてるから、
NULL チェックされとらんのよな。
bad_alloc を投げるようにハンドラ変えてやればいいんだけど。
あと、static const int メンバが直接初期化できないから
enum を使わないといけなかったり。
0419デフォルトの名無しさん2005/06/06(月) 20:11:45
SSE/SSE2対応。
0420デフォルトの名無しさん2005/06/06(月) 20:23:10
>>415
とりあえずboostでコンパイル通るコンポーネントが飛躍的に増えること。
これだけで導入の価値は充分にある。

あとVC6ではテンプレート周り、とくに特殊化/部分特殊化に関連するバグには
かなり悩まされてきたが、VC7.1ではほとんど修正されてる。
0421デフォルトの名無しさん2005/06/06(月) 20:27:15
まあ、今更.NETを買うよりは2005、もとい8.1を買う方が良いと思うよ
0422デフォルトの名無しさん2005/06/06(月) 20:31:14
今なら只だしな
0423デフォルトの名無しさん2005/06/06(月) 20:34:51
7.1よりさらに重い気が…
ベータ初期しか試してないが、多少は良くなったのかね
0424デフォルトの名無しさん2005/06/06(月) 20:35:56
β1に軽さを要求するってお前は本当にプログラマなのかと(ry
0425デフォルトの名無しさん2005/06/06(月) 21:25:22
alphaならともかくbetaなら仕上がっていて当然だと思うが
0426デフォルトの名無しさん2005/06/06(月) 21:28:26
beta ってのがどこまでできてるかってのは、
国や組織によっても認識が違ってたりするからなぁ。
0427デフォルトの名無しさん2005/06/06(月) 21:32:38
いや普通に評価版だろ
どこでも
0428デフォルトの名無しさん2005/06/06(月) 21:40:54
>>420
7.1でも部分特殊化はイマイチだ
8買っちゃうかも。
0429デフォルトの名無しさん2005/06/06(月) 23:27:39
8も只当然版は出るのかな〜
0430デフォルトの名無しさん2005/06/07(火) 00:59:52
VC++て2万円程度だろ。そのくらい出して当たり前では。。。
0431デフォルトの名無しさん2005/06/07(火) 01:14:22
買うなら VS だよなぁ。
0432デフォルトの名無しさん2005/06/07(火) 03:41:51
「βはリリース目前」が世界の常識。
0433デフォルトの名無しさん2005/06/07(火) 10:22:57
いまさらだが、VC6の全エディションからVS.NET Professional 2003に
3〜4万円くらいで乗り換えれたよ。VBやVJ等でも可。
もう1年前にキャンペーン終わってしまったが。
0434デフォルトの名無しさん2005/06/07(火) 11:45:36
最近ら抜き言葉をよく見るなぁ
0435デフォルトの名無しさん2005/06/07(火) 11:55:56
ら なんか(゚�听)イラネ
0436デフォルトの名無しさん2005/06/07(火) 13:08:04
「〜の方が」を「〜のが」とかいうバカのが気に入らない。
「ディテール」を「ディティール」とかいうバカも気に入らない。
0437そもそもカナで表記することが(ry2005/06/07(火) 14:16:50
>>436
「ディテイル」もしくは「ディーテイル」
0438デフォルトの名無しさん2005/06/07(火) 14:50:50
別に発音に正確にという意味じゃねーんだよバカ。
0439デフォルトの名無しさん2005/06/07(火) 15:48:26
あいぐまスカル
0440デフォルトの名無しさん2005/06/07(火) 16:26:16
そこらのゲイどもよりこのハードゲイ様のが素晴らしいんだぜオッケイ
ディティールが違うんだよディティールがフォー
0441デフォルトの名無しさん2005/06/07(火) 16:29:19
フゥ―――――(●∀●)―――――ウ!
0442デフォルトの名無しさん2005/06/07(火) 19:43:14
初心者に毛が生えた荒らしが、
自作自演で質問ゴッコするスレ
0443デフォルトの名無しさん2005/06/09(木) 22:30:56
age
0444デフォルトの名無しさん2005/06/10(金) 14:15:25
頂点配列をSTLのvectorでやる場合の問題とか気をつけることって何かありますか?
0445デフォルトの名無しさん2005/06/10(金) 17:16:58
特に思い浮かばないが。
0446デフォルトの名無しさん2005/06/11(土) 01:30:39
vectorの要素が変化するとメモリの再アロケートが起きるから
パフォーマンスは気にしたほうがいい。
0447デフォルトの名無しさん2005/06/11(土) 01:39:09
俺、vectorの再アロケートではまったことあるなぁ・・・
0448デフォルトの名無しさん2005/06/11(土) 01:43:53
reserve呼べば済むハナシ
0449デフォルトの名無しさん2005/06/11(土) 02:00:36
つか、とりあえずスレ違いじゃね?
0450デフォルトの名無しさん2005/06/11(土) 02:08:36
> vectorの要素が変化するとメモリの再アロケートが起きるから

「vectorの要素数が上限を超えると」だろ。
要素が変化するごとに再アロケートなんかおきてたらスパコンでも使えんわそんなもん。

0451デフォルトの名無しさん2005/06/11(土) 02:22:21
要素の追加、削除をするだけでもリロケート起きたような・・・
毎回起きるわけでもないみたいだけど。
0452デフォルトの名無しさん2005/06/11(土) 02:30:48
キャパが増えるとキャパを一定量増やして再アロケートするだけじゃないかな。
効率気にするなら reserve しときゃええ話やね。
0453デフォルトの名無しさん2005/06/11(土) 04:29:11
他のDirectXアプリのフルスクリーンの手前に
文字やグラフィックを表示することはできますか?
0454デフォルトの名無しさん2005/06/11(土) 07:19:04
できるよ。
0455デフォルトの名無しさん2005/06/11(土) 10:39:28
何気にJune2005からD3DXの単体配布OKになったんだね。
0456デフォルトの名無しさん2005/06/11(土) 12:55:38
処理速度調べようとこういうプログラム作ったのですが
http://gamdev.org/up/img/2757.zip

以下の内容を100万回施行
移動して、徐々に透明になる事を想定してのプログラムです。
1、テクスチャを描画、板ポリを生成、描画
2、板ポリ生成、描画
3、板ポリ描画
4、板ポリ描画(Lock版)

だいたい速度が同じなのですよね。
作り方がおかしいのでしょうか?
それとも、こんなもんなのだろうか・・・
Effective C++見るとみるからに変わってるんですがね
04574562005/06/11(土) 19:28:58
レスががが。
もしや、クラッシュさせてしまったのかっ!!
0458デフォルトの名無しさん2005/06/11(土) 20:03:11
>>456
VSync待ってたりして。
0459デフォルトの名無しさん2005/06/11(土) 21:14:47
>>456

最適化を有効にして実行してみた。
北森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:30
正直このテストで何を知りたいのかわからない俺がいる
0461デフォルトの名無しさん2005/06/11(土) 22:01:06
Releaseで何も設定をいじらずに実行

AthlonXP2500+ Radeon9600np DirectX9 april

VC7.1
Time1 29627
Time2 30479
Time3 10981
Time4 10163
0462デフォルトの名無しさん2005/06/11(土) 23:18:24
同じくReleaseで何もいじらずに実行

Pen4 1.8GHz Radeon9600 SERIES

VC6
Time1 46553
Time2 46654
Time3 11250
Time4 11690
04634562005/06/12(日) 02:18:56
おお、実行どもです
結果が大きくちがいますね。なんでだろう。
Athlon1.8GHz Geforce256で 一律4000でした。
プログラムは問題なさそう。なのか?
1,2は
リスト構造の中に予めVertexBufferを入れるか
描画する時にだけVertexBufferを生成するかどうか
(クラスの設計をどうしようかと考えていたので)
3,4は
データを上書きするのと
Lockしてデータを書き換えるのとは
どっちがパフォーマンスがいいのか?というのが目的です。
メモリの問題はとりあえず後回しとして。

実行してくれた方々ありがと〜。
04644562005/06/12(日) 02:28:46
一律40000だた
0465デフォルトの名無しさん2005/06/12(日) 03:39:07
http://developer.nvidia.com/object/nvperfhud_home.html

NVPerfHUDでパフォーマンスを解析したほうがいい。
ビデオカードは買わないとダメだけど効果は大きい。
使い方のムービーあるから見てみるといい。
0466デフォルトの名無しさん2005/06/12(日) 12:13:10
Athlon2500+とFX5200 128Mで一律50000…
やっぱグラボって重要なんだね…
0467デフォルトの名無しさん2005/06/12(日) 17:29:15
>>456
起動した瞬間固まる。。。
Win2000、RADEON9100、1GB
0468デフォルトの名無しさん2005/06/12(日) 17:31:42
>>467
それ、重すぎて画面に表示できてないよ。
数分経つと正常に終了するから
0469デフォルトの名無しさん2005/06/12(日) 19:55:52
400万回ループしたのちに
終了するようになってます。
0470デフォルトの名無しさん2005/06/12(日) 21:59:19
はじめまして・いきなりですが、DirectXについての質問です。
DirectXのサンプルと、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
>>470
まずエラー文をちゃんと読もう、な!
0472デフォルトの名無しさん2005/06/12(日) 22:03:02
>>470
そのメッセージをexcite翻訳すると

>Direct3D参照ラスタライザを切り換えて、全体のDirect3Dの特徴を実装するソフトウェアデバイスは、非常にゆっくりセットしますが、動きます。 あなたは続きたいですか?

ノートパソコンの時点でまさかとは思うが、ビデオカードが無いとか言わないよな?
0473デフォルトの名無しさん2005/06/12(日) 22:09:34
あー、ビデオカードは入ってないと思います。
以前はちゃんと動いてたので多分問題は他にもあるかと思います。
0474デフォルトの名無しさん2005/06/12(日) 22:13:29
>>473
コンパネからDirect3Dの設定を変えてみるとか。
0475デフォルトの名無しさん2005/06/12(日) 22:18:56
>>473
DX9の同じサンプルでだよな?
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
>>476
だからコンパネでDirect3Dの設定を変えてみなよ。
Emulate reference rasterizer
とかの項目を切り替えたり、Debug/Rereaseモードを切り替えたり。
04784702005/06/12(日) 22:52:51
設定色々変えてますが、あまり変化が無いように見えますね。
やっぱり、ノーパソでやること自体が無謀なんでしょうか(^^;
0479デフォルトの名無しさん2005/06/12(日) 23:09:21
最近のノートは凄いと思うがな・・・
04804702005/06/12(日) 23:15:55
とりあえず以前動いてたから何かすれば動くハズだと思います。
ご教授ありがとうございました。
再度一人でがんばってみます(^^
0481デフォルトの名無しさん2005/06/13(月) 01:36:07
↑のスペックなら必ず動くな・・・(漏れのノートとは比べ物にならない・・・orz)
0482デフォルトの名無しさん2005/06/13(月) 11:46:56
Z軸で奥にある物が、手前にある物の上に描画されてしまいます。
SetRenderState(D3DRS_ZENABLE, TRUE)は書いてるんですけど、
これ以外にも何か必要なものとかあるんでしょうか?
0483デフォルトの名無しさん2005/06/13(月) 11:55:43
SetRenderState(D3DRS_ZWRITEENABLE, TRUE)
0484デフォルトの名無しさん2005/06/13(月) 12:28:42
デフォルトでTRUEじゃなかったか?
単に精度の問題とかじゃ?
04854822005/06/13(月) 12:39:33
SetRenderState(D3DRS_ZWRITEENABLE, TRUE)
を書いてもだめでした。
0486デフォルトの名無しさん2005/06/13(月) 15:02:04
CodeGuruのサンプルを参考にしつつ勉強中な初心者からありがちな
「画面一杯に1枚絵を表示」する方法の質問です。
クライアント領域640x480のウィンドウに同サイズのテクスチャを
画面ぴったりに表示させようとしています。
で、表示自体は出来たのですが、各ドットが補完されボケて表示されて
しまいます。
SetTextureStageStateでD3DTEXF_NONEやD3DTEXF_POINTを指定すると
ボケた上に端々が汚く、D3DTEXF_LINEARだと綺麗だけどやはりボケます。
(↑これは当たり前ですが)

補完無しでくっきりと表示させる方法を教えて下さい。
orz オナガイシマス
0487デフォルトの名無しさん2005/06/13(月) 15:24:56
なぜ普通に聞けないのですか。
orzとかオナガイシマスとか、いい加減恥かしくないですか。
礼儀というものを知らないのですか。
いつからそういったものを覚えたのですか。
そういうノリだと誰かが教えてくれると思ったのですか。
0488デフォルトの名無しさん2005/06/13(月) 15:29:53
D3DXSprite 使うと良さげ?
0489デフォルトの名無しさん2005/06/13(月) 15:50:44
テクスチャ作成時にD3DXを使っていて、イメージと作成可能なテクスチャサイズが合わない場合に
勝手にイメージが拡大されるのを知らないってオチが大半やねこの場合。

あとは頂点座標を-0.5ピクセル分ずらすとか、UV座標を+0.5テクセル分ずらすとか。
0490デフォルトの名無しさん2005/06/13(月) 15:53:50
>>488
ID3DXSpriteの存在を本気で忘れてました
単純な矩形表示ならこっちの方が相応ですな…
ちょっと調べてみます。マリガトウ

>>487
つ● ウンコドゾー
0491デフォルトの名無しさん2005/06/13(月) 16:21:32
>>482
射影行列のZnをいくつにしてる?

>>490
せっかくいい線まで行ってるんだから、ID3DXSpriteなんて使うな。
原因はたぶん489の言う通り。
描画以前に読み込み時にテクスチャがボケてる。
04924862005/06/13(月) 16:33:06
>>489
>>491
489氏のレスみてテクスチャ座標を0.5テクセルずらしたらSetTextureStageStateの
D3DTEXF_NONE時の表示がだいぶマシになりました。
後はD3DXCreateTextureFromFileを使ってるのでご指摘の通りかと思われます。

D3DXCreateTextureFromFileはCodeGuruのサンプルをそのまま使ってた
だけなので、これをCreateTextureに置き換えてみます。
回答有難うございました。
ノシ
0493デフォルトの名無しさん2005/06/13(月) 16:50:44
>>486
D3DXCreateTextureFromFileExを使え。
04944862005/06/13(月) 17:41:01
>>493
今ちょっとやってみたらテクスチャが縦横に妙に縮小されて取りこまれてしまいました…

こう↓書いてたのを
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`;)
04954822005/06/13(月) 19:10:38
>>491
D3DXMatrixPerspectiveFovLH()のことですよね?
Znは0.1fです。
0496デフォルトの名無しさん2005/06/13(月) 19:17:18
かまととぶってんじゃねーよ気持ちわりぃな。
0497デフォルトの名無しさん2005/06/13(月) 19:43:58
>>494
テクスチャ座標を1.0にしてない?
たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
1024*512のテクスチャが作成されている。
D3DXCreateTextureFromFileExの後にサーフェスのサイズからテクスチャ
座標を計算する必要がある。
(1024*512と決め打ちするなら、640/1024,480/512をテクスチャ座標に)
04984862005/06/13(月) 20:15:23
>>497
できました!
座標直したらドット単位くっきりな画像が表示できました。
今しばらく勉強してみます。
皆さん有難う。( ´∀`)ノシ

>たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
>1024*512のテクスチャが作成されている。

この動作知りませんですた。サイズは512Pixel毎?
手持ちのDX9ヘルプにも見当たらないような…
0499デフォルトの名無しさん2005/06/13(月) 20:19:39
氏ねよ上っ面野郎
0500デフォルトの名無しさん2005/06/13(月) 20:32:55
>>499
つ● ウンコドゾー
0501デフォルトの名無しさん2005/06/13(月) 20:34:15
すみません、初めて質問するのですが、directxを使って音を出したいと思っております。
ネットを見てもファイルを再生する方法はよくありますが、そうではなく、その時々で任意の音を出したい
のですがどなたかご存知ではないでしょうか。よろしかったら教えてください。
0502デフォルトの名無しさん2005/06/13(月) 20:37:27
ストリーミング再生のやつを応用して、
WAV データを自前で生成しつつ再生すればいいと思う。
ストリーミング再生の資料は多少はネット上に落ちてる筈。
0503デフォルトの名無しさん2005/06/13(月) 20:40:05
>>502
本当にありがとうございます!!さっそく調べてみます。
■ このスレッドは過去ログ倉庫に格納されています