【C++】 DirectX初心者質問スレ Part4【C++】
1 :
デフォルトの名無しさん :
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/
2 :
デフォルトの名無しさん :2005/05/08(日) 02:04:56
ところで、「DirectX総合スレ」ってどこ逝っちゃった?
おまいが建てる予定だってさ
DirectXプログラマのコーヂングスタイルってどんなの? やっぱMS風のハンガリアン? 俺DirectXでプログラム覚えてライブラリ作ってきたから 100%MS準拠だったんだけど、最近きもくなって 過去のライブラリ書き直ししようか迷ってるマンコ。
前スレこぴぺ。 シミュレーションゲームで、敵の行動思考を計算する時、 市販のゲームとか、別スレッドで計算してるのですか? 自分の場合、適当に時間持たせて考えてる「フリ」にするつもり。 ハンガリアン気にしない。割には使ってます。 いちいち書き直すなんて。
マジレスすると、ゲームに依る。以上。
一人で作るなら俺ルールでいいとおもうけど ルールがないのはやばいが
8 :
デフォルトの名無しさん :2005/05/08(日) 15:07:23
DirectXの入門書で「これを買え」っていう本、何でしょうか? CやJAVAなどの本なら書店で立ち読みして良書を見極めて買ってるんですが、 DirectXの本って僕のいきつけの書店に置いてなくて、 通販で買おうと思ったんですがDirectXの本って結構たくさん あって選ぶのに苦労してます。 値段も結構張りますし。
マジレスすると、DirectX SDKについてくるHelpファイルが最強のチュートリアル。 その名の通りチュートリアルってプロジェクトがあるからそれを頭からみれば大体の 事は解る。
10 :
デフォルトの名無しさん :2005/05/08(日) 15:44:27
>>8 t-potの人のDirectX9 シェーダプログラミング
工学社のDirectX9 実践プログラミング
DirectX SDK ヘルプ
GPU Gems
SDK!SDK!言ってるがSDKに付いてくる日本語ヘルプの事ね・・('A`)
13 :
デフォルトの名無しさん :2005/05/08(日) 16:35:17
DirectX7のDirect3Dで、 頂点にDIFFUSE色を含ませて、その色のアルファ成分を利用して、 アルファブレンドしたいのだが、これってできる???(できなかったので) ブレンド方法は、 SetRenderStateを使って、SRCBLENDとDESTBELND を使ってやるやつ。 頂点にカラーがあるから、ライティングは不要にしてる。(無効にする) 一応なぜか、マテリアルを割り当ててるが、マテリアルの要素は全て無効だろう。(ライティングなしだから) ライティングを有効にしても、頂点のディフューズカラーのアルファ成分を使った、ブレンディングはできなかった。 アルファ成分は、常に1.0だと判断されてるようで、 これは、ピクセルカラーに含まれるアルファ成分を使ってるのではないかと思われるが。
14 :
8 :2005/05/08(日) 16:47:27
皆さんのおかげで、購入する本を決められます。 皆さん、どうもありがとうございました。
15 :
デフォルトの名無しさん :2005/05/08(日) 17:08:27
テクスチャを2D的に表示する為、 変換済み頂点のバーテックスバッファを作って トライアングルファンで四角ポリを表示させているのですが、 これを拡大する時はVBの頂点を直接弄るしかないでしょうか? 変換済み頂点なんで、 D3DXMatrixScalingとかかけてSetTransformしても意味ないですよね?
↑テクスチャっていうのは、画像ファイルという意味です。
17 :
13 :2005/05/08(日) 18:06:09
COLORVERTEX をfalseにしてますた。。。
18 :
13 :2005/05/08(日) 18:39:24
COLORVERTEX をTRUEにしたけど、アルファ値が変わらない。。。
19 :
13 :2005/05/08(日) 19:42:56
できた。。。(T_T)... こんなことで半日かかったよ。ヽ(`Д´)ノUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNN!!!!!
>>19 つまんねー日記でレス消費してんじゃねーよ
21 :
デフォルトの名無しさん :2005/05/09(月) 09:50:45
画像ファイルをスクリーン座標で表示する為、 変換済み頂点のバーテックスバッファを作って トライアングルファンで四角ポリを表示させているのですが、 これを拡大表示したい時はVBの頂点を直接弄るしかないでしょうか? 変換済み頂点なんで、 D3DXMatrixScalingとかかけてSetTransformしても意味ないですよね?
23 :
13 :2005/05/09(月) 18:08:45
D3DXMatrixScaling
変換済み頂点だって言ってんだろうが
D3DXCreateTextureFromFileExがDirectXデバイス既に作成したのに 「デバイスの準備ができてません」とHRESULT値を返す。 NULLチェックして確かめてるから間違いない。 しかも、引数に渡したファイル名の文字列が関数実行後「""」になってる。 const のはずなのに、デバッガが間違ってるのか、なんなのか、わけわかめ。 憂さ晴らしに書いた。
27 :
26 :2005/05/10(火) 13:13:01
「デバッガが間違い」というのは、深い意味で考えないでください...
28 :
26 :2005/05/10(火) 13:37:29
少し前にあるassert関数を省いたらバグ取れた。わけわかめ
VCでのプログラミングの経験はあるのですが、DirectXは初めてです。お薦めの本を教えてください。
>29 C,C++、win32APIでウインドウぐらい作れるのか?
↑何で偉そうなんだろう。 個人的にはDXでお勧めの本はない。 とりあえず工学者とかI/Oのは終わってる。 量産してるけど全部糞。 シェーダーとかグラフィックに特化したのは高いけど比較的まとも。 最初はSDKチュートリアルと個人サイトのチュートリアルをやって、 リファレンスとしてはSDKドキュメントがあれば十分いけると思う。
まあ、SDKのヘルプとサンプルが確実に最良の教科書なので、読みまくれってこった。 DirectX Graphicsだけなら、ノート取りながら読んで1日かからんはずだ。
つーか俺の経験だと、初心者が一段登る程度の情報だったらどんな本を買っても書いてあるよ。 本屋に行って適当なのを選んで来たら医院ジャマイカ
34 :
デフォルトの名無しさん :2005/05/10(火) 18:05:29
>>28 assertをとったらバグ取れたってのは表面的だな。
メモリリークしてる場合の症状だろ、それ。
35 :
26 :2005/05/10(火) 18:50:59
assertは、D3DXCreateTexture..の前にあるから、無関係。 assertで引っかかってるわけではないです。 assert(size); .. D3DXCreateTextureFromFileEx(...); で、最後の引数に帰ってくるポインタ(テクスチャ)はNULLではなく、 変な値。 メモリ配置に関するエラーだと思われますが。
レンダリングターゲットにアルファ値を書き込む方法ってありますか? ターゲットのアルファ値は常に0xFFだと思ってるんですが。 (アルファ値の計算で色が決定され、ターゲットにその色が反映されて、 ターゲットにアルファ値は本来不要だと思われるから) HPゲージのような一部分(矩形のような単純な形ではない)にだけ 塗ろうとして、その一部分のみを透明にして、その他部分は不透明 を表現しようとしてます。
37 :
デフォルトの名無しさん :2005/05/10(火) 20:03:22
>>36 常に0xFFだったらアルファブレンディグできないだろ。
38 :
36 :2005/05/10(火) 20:55:29
普通に考えたら、そんな遠回りする必要なく、 その形をかたどったモノをそのまま転送すればいい事に気づいた。
39 :
デフォルトの名無しさん :2005/05/10(火) 21:38:09
>>38 そんなことしないで、転送先ピクセルのアルファ値を使用した、
ブレンディングを学べ
40 :
デフォルトの名無しさん :2005/05/10(火) 22:03:28
メモリリークした箇所をデバッガで知ることが出来ますが、アホなものでその情報を生かせません。 Direct3D9: (ERROR) :Memory Address: 00c64028 lAllocID=1 dwSize=000047f8, ReturnAddr=017134c8 (pid=00000584) 例えば上記のような情報から、どうやってリークした対象を特定するのでしょうか。 デバッガでメモリの状態を見ることが出来ますが、それで確保された瞬間を見るとD3DのDeviceだったりしてお手上げでした。 IDというのが便利そうなのですが…。
41 :
デフォルトの名無しさん :2005/05/11(水) 02:03:59
メモリリークしたら、企画ごとボツが定石
42 :
デフォルトの名無しさん :2005/05/11(水) 02:17:56
サーフェスを画面に表示するにはどうやるの?
>>37 アルファブレンディングで、ターゲットのアルファは使わないのでは?普通の式だと。
Result = Src * Src_α + Target * (1 - Src_α)
44 :
デフォルトの名無しさん :2005/05/11(水) 05:15:21
>>41 昔初心者の頃マジでそうしてた(;・∀・)
46 :
デフォルトの名無しさん :2005/05/11(水) 15:12:51
ピクチャーコントロールにDXで描画するダイアログベースのツールを作ろうとしているのですが、 ピクチャーコントロールの更新されるタイミングが分からず困ってます。 まずはアプリの起動時にDXで適当な矩形でも表示してみようと、 WM_INITDIALOGで矩形描画関数を呼んでみたのですが、 一瞬描画されたあと、ピクチャーコントロールの色で塗りつぶされてしまうようでした。 なので、WM_PAINT内でも同じように描画関数を呼んで見たのですが相変らず 起動時に矩形を表示してくれません。 (というかピクチャーコントロールの描画で消されているような感じ。) WM_LBUTTONDOWN内などで描画すればきちんと表示されるのですが、 WM_MOVE内で呼んだ時などは、一度目の移動では表示されず、 二度目以降の移動では表示されるという、よく分からない挙動になっています。 どうしたらいいのでしょうか? 環境はW2k、VC6、DX9.0bです。よろしくお願いします。
原因不明のバグをがんばって取れるのがプロ
>>50 あぁ、そうか。D3D9 内部でやってるメモリ確保でのリークなのか...。
53 :
52 :2005/05/11(水) 23:51:56
54 :
46 :2005/05/12(木) 01:03:39
APIスレいってきます
DirectXのメモリリークは 一兆%の割合でrelease忘れ。
56 :
デフォルトの名無しさん :2005/05/12(木) 17:04:21
すいません、Xファイルを読み込ませてもオブジェクトが真っ黒なのですが。。。 自己照明の設定にすると見えることは見えるのですがどうにも平坦で。。
ふーん。だから?
はぁ?わざわざ説明しなきゃわかんねーの?読解力ゼロだね
糸冬 了
60 :
デフォルトの名無しさん :2005/05/13(金) 08:37:57
再 起 重力
走己重力
頂点xyzを指定して、プリミティブを見るソフト教えてください。 簡易ソフトでビューア、形状確かめに使おうとしてます。 使ったことあるけどソフト名は覚えていない
63 :
デフォルトの名無しさん :2005/05/13(金) 15:58:38
DierctX9 C++ wizardで立ち上げたプロジェクト内で、 MFCを使うことは可能ですか? それともMFCで立ち上げたプロジェクトでDirectXを使用したほうが 楽なのでしょうか?
ALPHAOPにSELECTARG1 ALPHAARG1 -> DIFFUSE ALPHAARG2 -> TEXTURE を指定しているのに、 テクスチャ作成の際、指定したカラーキーによる透過に成功している。 頂点色のアルファ値を使ったアルファブレンドがしたいのに。 頂点のアルファ値はちゃんと半透明になってるのに。
65 :
左利き :2005/05/14(土) 13:29:12
質問させてください。 DXライブラリを改造したライブラリを使って(DirectShow利用) Webカメラの撮った映像を表示するプログラムを作っているのですが、 キャプチャ出来ません。 その理由に、 ビデオキャプチャするデバイスが Conexant 2388x Video Captureと Mic Cam 2つが存在し、 デフォルトのビデオキャプチャのデバイスがConexant 2388x になっているから だと思うのですが、 (Mic Camしかない別のPCだとキャプチャ出来る) Mic Camに設定してキャプチャする方法はないでしょうか? ↑はプログラムで設定するのではなく、 コントロールパネルのような所で設定できませんか? お願いしますm(_ _)m
66 :
デフォルトの名無しさん :2005/05/14(土) 13:51:43
67 :
デフォルトの名無しさん :2005/05/14(土) 15:27:11
DX9.0cでvsyncをオフにしたいのですが…
だから何?
69 :
デフォルトの名無しさん :2005/05/14(土) 15:45:10
>>68 すいませんでした。VSYNCをオフにする方法を教えてください。
ググって見てもIDirect3DDevice9::Presentが関係しているということしかわかりませんでした。
ageてしまったorz
PRESENT_PARAMSが関係していると連想できない?
72 :
デフォルトの名無しさん :2005/05/14(土) 15:54:15
73 :
デフォルトの名無しさん :2005/05/14(土) 16:04:48
何か最近変な奴が沸いてるな
75 :
デフォルトの名無しさん :2005/05/15(日) 17:39:15
「はじめての3Dゲーム開発―「DirectX9」の使い方から「1人称3Dフィールド・ゲーム」の制作まで」という本は このスレ的にはどんな評価でしょうか? 今読み進めてるのですが、初めは割と解説も多かったのですが当たり判定のことが書いてあるページ位になると かなり多くの新しい関数が出ているのにもかかわらず殆ど細かい説明はありませんでした・・・ もっといい書籍はありますかね?
DirectX10はいつ出るのでしょうか?
WGFです
79 :
デフォルトの名無しさん :2005/05/16(月) 17:05:29
WGF1.0 = DirectX9.1 WGF2.0 = DirectX10 安心してDirectX9やっとけ ちなみにRMは廃止な、今さら使ってる奴いないだろうけど
いやです。
知っているがお前の態度が気にいらない。
いえいえ、無理していただかなくて結構ですよ。
次の方どうぞ
次の方は銅像。
ここのところ、まともな回答が一つもないなぁ… 特にちょっと難しめの奴には
89 :
デフォルトの名無しさん :2005/05/17(火) 03:33:08
こんにちは、DirectXって何ですか? 俺にもわかるように優しく教えて。
フォントオブジェクトを使って文字を表示するとアンチエイリアスがかかって、ぼやけた感じになるのですが、 これを防ぐ方法を教えてください。
フォントオブジェクト? ID3DXFontけ? だったらそれを使うのを止める。 代替案に関してはググれば出てくる。頑張れ。
なんじゃそら。もったいぶる意味がわからない。
はよ出せやタコ なんのための質問スレだ
94 :
デフォルトの名無しさん :2005/05/17(火) 05:24:35
95 :
90 :2005/05/17(火) 05:24:58
96 :
デフォルトの名無しさん :2005/05/17(火) 05:25:36
97 :
デフォルトの名無しさん :2005/05/17(火) 05:26:43
>>94 なるほど納得
VIPPERも平日の朝からご苦労だなw
98 :
デフォルトの名無しさん :2005/05/17(火) 05:26:56
>>94 グロ 踏んだらPCから神山満月ちゃんが出てくる
99 :
デフォルトの名無しさん :2005/05/17(火) 05:26:59
またVIPPERかよ
100 :
デフォルトの名無しさん :2005/05/17(火) 05:28:48
wの使い方でVIPって分かる
>>90 フォントだけ表示するとこ抜き出して
その不具合を再現してるテストコード書いてうpしてみ。
そしたら見てくれる人がいるかもしれない。
逆に、その作業の途中で自分で原因見つける事も多いよ。
そのくらいの努力はしたまえよ。
103 :
デフォルトの名無しさん :2005/05/17(火) 05:31:20
104 :
デフォルトの名無しさん :2005/05/17(火) 05:31:32
ラウンジいいからでてけ
106 :
デフォルトの名無しさん :2005/05/17(火) 05:33:39
以上ラウンジのイケメンのしわざでした
m n _∩ ∩_ n m
⊂二⌒ __) /\___/ヽ ( _⌒二⊃
\ \ /'''''' '''''':::::::\ / /
\ \ |(●), 、(●)、.:| / /
\ \| ,,ノ(、_, )ヽ、,, .::::|/ /
\ .| ´トェェェイ` .:::::::| / それが、ラウンジ精神
\\ |,r-r-| .::::://
http://ex7.2ch.net/entrance/ \`ー`ニニ´‐―´/
/ ・ ・ /
107 :
デフォルトの名無しさん :2005/05/17(火) 05:34:47
160 名前:訴える名無しさん。[sage ラウンジ] 投稿日:2005/05/17(火) 03:46:38 ID:???
以上ラウンジの馬鹿のしわざでした
m n _∩ ∩_ n m
⊂二⌒ __) /\___/ヽ ( _⌒二⊃
\ \ /'''''' '''''':::::::\ / /
\ \ |(●), 、(●)、.:| / /
\ \| ,,ノ(、_, )ヽ、,, .::::|/ /
\ .| ´トェェェイ` .:::::::| / それが、ラウンジ精神
\\ |,r-r-| .::::://
http://ex7.2ch.net/entrance/ \`ー`ニニ´‐―´/
/ ・ ・ /
161 名前:訴える名無しさん。[sage] 投稿日:2005/05/17(火) 03:50:34 ID:???
これはラウンコの連中ですね・・・
162 名前:訴える名無しさん。[sage] 投稿日:2005/05/17(火) 03:51:38 ID:???
ラウンジの奴らはほんとにたち悪いな・・・
163 名前:訴える名無しさん。[sage] 投稿日:2005/05/17(火) 03:51:43 ID:???
えぇ、もうラウンコの人にはうんざりですよね
164 名前:465[] 投稿日:2005/05/17(火) 03:56:51 ID:e6MkygGj
ほんとにラウンジには呆れ果てますね
165 名前:訴える名無しさん。[sage] 投稿日:2005/05/17(火) 03:57:25 ID:???
もうラウンジに失望されっぱなしですよ
これ見ろよ
VIPPERってこんなことするんだぜ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
「vipから来ますた」「vipから来ますた」「vipから来ますた」「vipから来ますた」
それが、ラウンジ精神
http://ex7.2ch.net/entrance/
109 :
デフォルトの名無しさん :2005/05/17(火) 05:39:05
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
「vipから来ますた」「vipから来ますた」「vipから来ますた」「vipから来ますた」
それが、ラウンジ精神
http://ex7.2ch.net/entrance/
110 :
91 :2005/05/17(火) 05:40:20
…………。 暇だから煽り房と遊ぼうと思ったのに……orz もういいッ! フテ寝するッ!
>>91 どのような言葉でぐぐればよいのでしょうか?
それもググれ
113 :
デフォルトの名無しさん :2005/05/17(火) 09:47:01
いいからバカ相手にしてないで再現コードうpしろよ
115 :
デフォルトの名無しさん :2005/05/18(水) 11:36:19
ウィンドウモードと、フル画面モードを実行中に切り替えるには、 どうやればいいんでしょう? DirectXやウィンドウを作り直す必要がある?
116 :
115 :2005/05/18(水) 11:44:25
すみません、解決しました。
116は私ではありません
117は私ではありません
自己解決した時は どこがおかしくてどうやったら解決したか を書け。
>>115 せめてDirectXのバージョンくらい書こうぜ。
8以降ならResetするときにD3DPRESENT_PARAMETERSを変更するだけでOK。
私って誰
画面の解像度も変えるんならロスト対策とか色々めんどいよ うまくいかなかったらデバイスもリソースも全部作り直したほうが楽かもね
123も私ではありません
ボールのXファイルに質量とか弾性とか持たせたいんですが やっぱクラスにまとめるんですか? Xファイルにパラメータみたいなものも書き込めるんでしょうか?
クラスとかにまとめるというのが意味不明だが、 自分でテンプレートを定義すればいくらでも入る。 XFileはただのコンテナに過ぎない。
127 :
115 :2005/05/19(木) 00:44:46
すみません凍結しました。
>>125 xファイルにユーザーデータな話でぐぐれ
m
(-m-)
mか、、、rnかと思った
(-rn-)
133 :
デフォルトの名無しさん :2005/05/20(金) 23:24:13
VC++.NET2003でDirectX9.0cAprilでDirectPlay8を利用した クライアントサーバ型チャットプログラムを作っています 通信相手が接続したらDPN_MSGID_メッセージを 別ソースへ記述してあるメッセージハンドラが受け取って .NETWindowsフォームアプリケーションのForm1の リッチテキストボックスコントロールのrichtxtに "接続しました”系のメッセージを表示するには どうすればよいでしょうか? switch(dwMessageType) { case DPN_MSGID_CREATE_PLAYER ここをお願いします return DPN_OK; }
それはAPIの質問じゃないの。 DirectPlayがどうとか前半の話は全然関係ないやん。
起伏のある地面の上を歩くプログラムを作りたいのですが普通は地面と自キャラの当たり判定をどのように取るのでしょうか?
素人はまずランドスケープでも勉強しろ。
137 :
135 :2005/05/22(日) 02:13:28
>>136 ランドスケープでぐぐると造園等のまったく関係の無い情報ばかりでてきますのでもう少し絞り込むためのキーワードみたいなものを教えていただけないでしょうか?
ハイトマップとかハイトフィールドとか。 一つ先のフレームでの自キャラの位置を想定して、 「自キャラの膝あたりから地面方向に飛ばしたレイ」と「自キャラの真下の地面のポリゴン」 との当たり判定(直線と面との当たり判定は、intersectなんちゃらとかいう関数がDXにあったと思う)をして、 レイと地面の交差位置が自キャラの膝下の長さより長ければ浮いてるって事だからその分だけ下降させ、 短ければ潜ってるってことだからその分上昇させる事で「接地」させられる。 というふうに自分はやってみた。
画面上でマウスカーソルの位置をセットする方法を教えてください
もうすこし意味が伝わるように一生懸命に質問しろよ。礼儀知らずが。
ワールド空間での長さ1を現実世界でのどのくらいの 長さにするか迷ってるのですが、よく使われる設定 とかってあるんですか?
わけわかめ。どういう答えを期待してるのだろう。
DirectX9.0c を使っています。 デバイスをリセットする際、その直前にいくつかのメモリを明示的に解放しないと いけないと本に書いてありましたが、CreateVertexBuffer メソッドで取得した LPDIRECT3DVERTEX9 も解放する必要があるのでしょうか。 もし解放するなら、どのように解放するのでしょう。 LPDIRECT3DVERTEX9 には Release メソッドが無いし、 FreePrivateData メソッドもなにか違う気がするのですが… 実は CreateVertexBuffer で D3DPOOL_MANAGED を指定しておけば 何も問題は無かったりしますか?
144 :
デフォルトの名無しさん :2005/05/22(日) 15:36:34
来年からIT企業にPGとして就職するんだけど、 文学部出身だから、プログラムが全然分からない。 早くSEになりたいので、まずプログラムをマスターしたいんですけど、 まず何を勉強したらいいですか?
145 :
デフォルトの名無しさん :2005/05/22(日) 15:42:11
>>144 SEになりたいならプログラムの知識はいらない。
ここは笑う所ですか
PGとして就職するのにプログラムの知識がいらないとはこれイカに
SEとPGを混同している馬鹿がいるな。
149 :
デフォルトの名無しさん :2005/05/22(日) 21:20:46
>>143 IUnknownから継承してるので、Releaseメソッドはある。
MANAGEDリソースはReset時に復活できるようメモリに
コピーされている。マニュアル嫁。
>文学部出身だから、プログラムが全然分からない。 こーゆー人知り合いにもいるけど苦労するよ。 人生失敗したと後悔すると思うから考え直したほうがいい。 しかし何でDirectXのスレに書いてるんだ?
バカだから。
つーか、文学部かどうかとプログラミングの能力には直接の関連性はないね。 尤も、スレタイも読めないようじゃ、人間としての素養を疑わざるを得ないけど。
どうせマルチじゃないの?
VCまで理解しました。そんな人のためのDirectXの良書を教えてくだされ。
次は VC++ を理解してください。
その間の VC+ もよろしく
157 :
143 :2005/05/23(月) 11:20:25
>>149 ああ、Release って IUnknown にくっついていたのね。。。。。
解決しました。どうもありがとう
てことは、本とかでよく使われるマクロ
#define RELEASE (x) {if(x)(x)->Release();(x)=NULL;}
も、
inline void RELEASE(IUnknown* x) {
if( *x) {
(*x)->Release();
(*x) = NULL;
}
}
というふうに型チェックつきにできるのかな?
できる。
159 :
857 :2005/05/23(月) 11:35:47
漏れは template <class T> inline void safe_release(T*& p) { if (p) { p->Release(); p = 0; } } ってやってた
>>159 HDDの空きがない、ファイルが壊れている
162 :
デフォルトの名無しさん :2005/05/23(月) 16:06:39
>>162 「エラーが出ます」だけじゃ若ラン。
「どんな」エラーが出ているのかを述べよ。
164 :
159 :2005/05/23(月) 16:27:22
165 :
159 :2005/05/23(月) 16:31:20
166 :
デフォルトの名無しさん :2005/05/23(月) 16:32:58
そもそもCとは何
>>165 WindowsUpdateからDirectXランタイムを入れてみたら?
168 :
デフォルトの名無しさん :2005/05/24(火) 21:55:05
DirectX9の環境で、DirectX7のプログラミングって可能ですか? ビルドは通るんですが、実行時にIDirectDraw7のインターフェースが取得できなくて終わってしまいます。
可能。
Direct3DCreate9 関数に失敗した場合に表示するエラーメッセージって、 「Direct3Dの取得に失敗しました。以下の方法で解決できる場合があります。 ・DirectX がインストールされていない場合はDirectXをインストールしてから実行してください。 ・ほかにソフトが起動している場合は、それらを全て終了させてください。 ・Windowsを再起動してから実行してみてください。 ・サポートWEBに、このエラーについての情報がないかどうか確認してみてください」 ってしておけばPC初心者にも優しいかな?
171 :
168 :2005/05/24(火) 22:49:27
ということは、ソースが悪いのですか。初期化できないス。。。
>>171 Direct7 がインストールされてなかったりして。
>>171 実はDirector7 だったりして。
174 :
168 :2005/05/24(火) 23:28:23
なんとか解決しました。DirectDrawCreateExの第二引数にLPDIRECTDRAW7のポインタを指定、という所を 解決前: LPDIRECTDRAW7 pDD; DirectDrawCreateEx( , pDD.....); 解決後: DirectDrawCreateEx( , &pDD....); でした。しかし、なぜ&が必要かが未熟者でイマイチ理解してない。 LPDIRECTDRAW7型自体ポインタですよね?それとも構造体なのかな?
アホすぎ
>>174 void f0( int* a )
{
a = new int;
}
void f1( int** a )
{
*a = new int;
}
int main()
{
int* a0 = NULL;
f0( a0 );
int* a1 = NULL;
f1( &a1 );
}
177 :
168 :2005/05/25(水) 00:15:19
>>176 アドレス変数のポインタを指定しろって仕様だったんですね。勘違いしましたTHX。
D3DXCreateTextureFromFileExでTexture作成時にD3DPOOL_MANAGEDを指定しても Resetに失敗する……なんでだろ?
179 :
178 :2005/05/25(水) 22:11:22
自己解決……スマソorz
DirectInputの機能だけでマウスの現在のクライアント座標を調べる方法はありますでしょうか?
181 :
デフォルトの名無しさん :2005/05/26(木) 09:39:35
>>180 DirectInputのサンプルにマウスの項目がある。
Win32APIを使えば一瞬ですむものを、なぜわざわざDirectInputを使おうとするのかさっぱり理解できない。
>>181 サンプルのMouseは移動量を調べることができるだけですよね?
クライアントウィンドウ内の座標を調べたいのですが
>>182 今回のプロジェクトのルールでWin32APIを使っちゃいけないんです
_, ._ ( ゚ Д゚) ガシャ ( つ O. __ と_)_) (__()、;.o:。 ゚*・:.。
XBOX関連、とか
それだとマウス無い
> 今回のプロジェクトのルールでWin32APIを使っちゃいけないんです ウインドウの表示すらしないとは、凄まじいプロジェクトですね。
クライアント座標って書いてるからにはウィンドウは表示させるんだろう 何で使っちゃいけないことになったのかは知らんがすさまじいプロジェクトだな
気分で決めてんじゃねーよw
190 :
デフォルトの名無しさん :2005/05/26(木) 21:54:54
立方体をたくさん書いてみたんですが、奥の立方体が手前の立方体の上に表示されてしまいます。 一応奥の立方体が小さくは表示されているんですが。 Zバッファも設定してるんですが、それだけじゃダメなんでしょうか?
191 :
190 :2005/05/26(木) 22:46:35
出来ました。 Nearクリップ値を0にしていたのがまずかったようです。
古いPCでも動作可能なものにするために i810EのオンボードVGAのPCで動くように作ろうとしたのですが そのPCで実行するとCreateDevceを呼んだ時に 「問題が発生したため、xx.exeを終了します。〜」 のメッセージが出て終わってしまいます。 DirectX診断ツールのDirect3Dのテストをやってみても問題はありませんでしたし 普段動作確認に使ってるPC(FX5200)ではちゃんと実行できるのでプログラムの問題ではないと思うのですが 何が原因なのでしょうか?
プログラムが原因
質問ですが、効果的なアンチエイリアシングの方法はやはり、 マルチサンプリングして、その差の平均を取る方法がベターでしょうか。
195 :
T :2005/05/27(金) 21:59:41
//移動ベクトルのリセット 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を使用したプログラムに変更したいの ですが、どうしたらいいのか教えてください。 よろしくお願いします。
196 :
デフォルトの名無しさん :2005/05/27(金) 22:12:38
>>195 ここまでわかっててなんでわかんないの?
アドバイスのしようがない。
>>195 MSDNでじっくりドキュメントを見れば良いじゃん
Windowモードで実行するプログラムでウィンドウをリサイズすると 描画されている内容も一緒に伸縮してしまいます。 描画内容はサイズ固定で、足りない分はスクロールバーで制御するようにしたいのですが、 よくわかりません。 プレゼンテーションパラメーターでWeight、Heightを800,800として、 幅1のポリラインを描画してWindowをリサイズすると、描画される線の太さはどうやらWindow幅/800のようです。 なにかしらのフィルタリングもされているようです。 SetViewport()は関係なさそうでしたが、 リサイズにあわせて何かのパラメーターも変更されてると思うので、 それがわかれば制御できるとは思うのですが… どなたかご教授くださいませ。 当方DirectX8、VC++6、MFCにて作っております。
199 :
T :2005/05/27(金) 23:31:07
>>196 わからないから教えてほしいのですが。 どこをどう変えればいいのですか?
200 :
192 :2005/05/28(土) 03:39:32
>>192 の問題は解決したのですが
CreateDevceを呼ぶとVRAMが足りないと言われます
Zバッファを使わない
バックバッファのサイズとフォーマット以外で
初期化の時点でVRAMを節約するにはどうしたらいいんでしょうか?
行列とかクォータニオンのライブラリってD3DXに 頼らずに全部自前で作るのが普通ですか? D3DXにない関数を作ってると、混ざってごちゃごちゃに なってしまいそうな感じがするんですが
>>198 ウィンドウのリサイズしたらプレゼンテーションパラメーターも作り直し、
更にその前にリソースを開放して構築しなす必要がある、
なんて聞いたことがあるけどよくしらない。
描画するときに自分で拡大するように指定しているだけの話。 サンプル丸写しで各関数が何をやっているか考えずに使うから、 その程度のことすら分からない状態になる。
>描画するときに自分で拡大するように指定しているだけの話。 それがどこで、どうなってるから、そうなってるのか、 分からないから聞いてるのに。
つうか質問スレで意味不明にもったいぶった回答するバカって 何がしたいのかよく分からない。 教える気がないなら邪魔なだけだから書き込むなよ。
カッコつけたいんだけど、回答して間違っていたりあらを指摘されるのが 怖いから、具体的には回答しないんだよ。
つーかその程度もヘルプ見て理解できんヤツに ここでちょっと書いただけで理解きでるとは思えないんだが… 自演乙
どっちやねん。簡単な問題なら簡単に教えて解決→終了だろう。 教えない・教えられないなら黙ってろ。他の全ての人にとって邪魔だ。
>>200 自己解決したならどう自己解決したか書きましょう。
都合良すぎです。
普通はそうなんだが、説教だけでろくなレスが返ってこないこのスレじゃ
214 :
200 :2005/05/28(土) 13:45:18
>>212 プログラムが原因と言われたので
初期化までの部分を一から書き直したたら
強制終了しなくなっただけで
明確な原因はわかってないのです
今DirectXで一番新しいのは何ですか?
216 :
198 :2005/05/28(土) 14:33:42
>>203 >>204 どうもありがとうございます
Present関数に2つの矩形を指定したら制御できました
ヘルプ見たらBlit元矩形と先矩形を指定してる関数だって書いてて納得しました。
デバイスの再作成も解決策の一つみたいなんですが
テクスチャが全部なくなっちまうのでちょっと気分悪かったんですが
Presentだけで対処すればそうはならないようですが…
いつまでも画面に映らない範囲のリソースを延々と保持する訳にもいかないので
いつか適当なタイミングで再作成も必要なんでしょうね…
9.0c
218 :
デフォルトの名無しさん :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だけを使用したプログラムに変更したいの ですが、どうしたらいいのか教えてください。 よろしくお願いします。
ここで質問するより、BBX読む方が為になるに100ガベソ。 どうせ説教されて、さらにストレス溜まるだけ。
>>218 196 名前: デフォルトの名無しさん 投稿日: 2005/05/27(金) 22:12:38
>>195 ここまでわかっててなんでわかんないの?
アドバイスのしようがない。
222 :
デフォルトの名無しさん :2005/05/28(土) 21:50:11
テクスチャを張ったポリゴンの一部が画面外に出ると 表示がおかしくなるんですが、 どうすればいいでしょうか。 VC.net DirectX9で DrawPrimitiveUP使ってます
223 :
デフォルトの名無しさん :2005/05/28(土) 22:01:59
>>222 どうおかしくなったかくらい書け。
near設定がおかしいんだよ、どうせ。
224 :
デフォルトの名無しさん :2005/05/28(土) 22:16:35
>>223 画像がゆがんだり消えたりします。
補足します
2Dのシューティングを作ろうとしていて、
背景を3Dで表現したいんです。
調べていくとどうも射影行列の設定がおかしい
っぽいのですが、どうおかしいのかも
本当にそうなのかもわかりません。
225 :
デフォルトの名無しさん :2005/05/28(土) 22:23:07
さらに補足 おかしくなるのは2Dのほうで (゚д゚) ↓ (°Д°) こんな感じになります。 何度も補足すみません。
アスペクトは?
227 :
デフォルトの名無しさん :2005/05/28(土) 22:40:27
プロジェクション行列は D3DXMatrixPerspectiveFovLH( &g_Projection, D3DX_PI / 4, 1.33f, 1.0f, 100.0f ); と設定してるので1.33fを指定してます。
ビデオカード固有の問題かもしれないので、他の環境で試すべし。
229 :
デフォルトの名無しさん :2005/05/28(土) 23:00:01
そうしてみます。 わざわざ回答してくださってありがとうございました。
D3DXQUATERNION の乗算の計算が合わないんだけど、 これって左手座標系にするためにzの符号を反転して から計算してるってこと?
231 :
デフォルトの名無しさん :2005/05/29(日) 01:06:16
> 合わないんだけど 何と何の結果が合わないのか書かないと 答えようがないことに気づかないか?
なんかこのスレに変なのが住み着いてますね
符号間違えてるか、積の左右を間違えてるか。
DirectX 9.0cをダウンロードしたいんですけど ページが表示されないと表示され、できません 私だけでしょうか?
D3DXのは左手座標系で反時計回りになるように調整してるんじゃない?
>>234 ページが表示されないと表示され、
ページが表示されると表示されない。
お前日本語大丈夫か?
キチガイ常駐フォーーーーーーーーーーーーーーゥ!
>>236 は「ページを表示できません」のエラーが表示されたことが無いようです
羨ましいですね^^;
質問があります。 テクスチャがVRAMに載るのは、D3DXCreateTextureFromFile()でLPDIRECT3DTEXTURE9を 作ったときですか?それともID3DXEffect::SetTexture()を呼んだときでしょうか? それとテクスチャをVRAMにどんどん載せていって、VRAM容量が超えたときは何が起こるのでしょうか?
241 :
デフォルトの名無しさん :2005/05/30(月) 01:21:17
>>240 VRAMにのりきらなけりゃ、エラーになる。
オマエ、戻り値をチェックしないタイプだろ。
>>241 レスありがとうございますた。
確かに戻り値はあんまチェックしないですね・・・。
これからは戻り値に気を付けたいと思います。
VRAM足りなかったらメインメモリに載る。
244 :
デフォルトの名無しさん :2005/05/30(月) 10:40:30
SetPositionやSetOrientationを使用して物体を移動させるには、具体的にどのようにすれば良いのか教えてください。 自分が今考えているのは、ある指定されたキーを押した時の位置や姿勢を直接与えればいいと思うのですが、合っているのかわからないので、教えてください。
SetPositionってどこのクラスのだよ。IDirectSound3DBuffer8::SetPositionか?
RMにそんなのがあったような・・・
DirectInputでマウスを使用すると、 デバッグのブレーク時にマウスカーソルの動きがおかしくなります。 Win2000ではデバック時にカーソルの動きがおかしくなるという所までは 分かったのですが、それから上手い解決方法が見つかりません・・・。 DirectInputをデバッグ版で使用する方法が載っていたのですが、この場合、 SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE) しか指定できず、カーソルが消えてしまいます。 OS変えるしか無いんですかね・・・。 ちなみに、マウスでDirectInputを利用しているのは、 ホイールの移動量をリアルタイムで調べる為です。 ウィンドウメッセージやDirectInputを使わずに 現在のホイールの座標を直接取得できれば解決するのですが・・・。 Windows2000 VC++2003 DirectX9 oct 2004
ホイールに座標など無い。
WM_MOUSEWHEELでいいだろ。
インターネットの始め立てのころ、僕は掲示板に書き込むときなどは もちろん敬語・丁寧語で書き込んでいました。 いつからか僕は平気で、偉そうに、だろだろ書き込むようになりました。
251 :
デフォルトの名無しさん :2005/05/31(火) 03:05:21
>>250 すげー不自由な日本語使うね。
読み難いよw
「もちろん」の意味解って使ってる?
>>250 お前ひょっとして中国人留学生か?間違え方がそれっぽいぞ。
もう少しまともな日本語を読み書きできるようになってから出直せ。
253 :
250 :2005/05/31(火) 08:29:37
在日朝鮮人です
>>249 ウィンドウがアクティブじゃなくても、
WM_MOUSEWHEELを受け取れますか?
在日朝鮮人なら日本語しっかりしてる筈だぞ。
結局、インターネットで情報が簡単に調べられるようになっているから、 パソ通時代と違って質問ベースのBBSって必要ないんだよね。 そういう環境の中質問しに来るのは変なのばかり。
常駐キチガイ自演フォーーーーーーーーーーーーーゥ!
260 :
デフォルトの名無しさん :2005/05/31(火) 19:55:42
DX9.0Cから搭載されたCustomUIを日本語で 詳しく紹介してあるサイトがあったら教えてください ゲーム画面中日本語入力が必要になったのでお願いします
詳しく紹介してあるサイトがなかったので教えないフォーーーーーーーーゥ!
262 :
260 :2005/06/01(水) 00:32:26
(;´Д`)残念 私も探してみたんですがわざわざ探していただいてありがとうございました 日本語入力を実装するのって難しいんでしょうか?
日本語サイト知ってるけど教えないフォーーーーーーーーーーーーゥ!
実に基本的なことで申し訳ないけど、 DirectX9c SDK は Update summer 2004 のみでよろしいのでしょうか? それとも DiectX9 SDK + summer 2004 ?
頂点座標(XYZ) 法線ベクトル(XYZ) 頂点カラー(ARGB) ライト D3DLIGHT9構造体のデータ マテリアル色 D3DMATERIAL9構造体のデータ 以上のデータを使ってライティングするコードを教えてください。もしくは公式を。 以前はDirectXのAPIを使ってやっていたのですが、諸事情により、自力で光源計算しないといけなくなりました。 もしスレ違いなら書き込むべきスレを教えてください。 よろしくお願いします。 言い忘れました、ライティングの種類は平行光源です。
267 :
デフォルトの名無しさん :2005/06/01(水) 18:17:01
age
頂点法線の方向と、光源の方向の内積を計算。 その値と、頂点カラーと、拡散反射係数を乗算するとディフューズ色はでるけれど。
固定機能のワールド行列は 頂点だけでなく、法線も適用されますか?
270 :
デフォルトの名無しさん :2005/06/01(水) 19:24:13
win2000だと DX9.0 SDK Update (December 2004) までで vc++6.0の場合は DX9.0 SDK Update (October 2004)まで対応してるんですよね?
>>266 SDKのヘルプに全部書いてあるじゃん。
Mathematics of Lightingってところ。
>>266 頂点へのランバートの余弦則と、フォンのスペキュラでモーマンタイ。
あとは面内補間だから。
273 :
デフォルトの名無しさん :2005/06/02(木) 01:00:13
>>269 されるよ。されるけど、normalizenormal だかなんかのレンダリングステイトを
イネーブルにしないと、ワールドマトリックスのスケーリング成分に合わせて拡大されてしまう。
っていうか、シェイダー使った方が楽。
>>273 これ、知らないで拡大して真っ黒になっちゃって、あわてる馬鹿な同僚がいたw
そんときいそがしかったから、正直、氏ねって思った。
275 :
デフォルトの名無しさん :2005/06/02(木) 01:09:58
「モーマンタイ」って何ですか?
277 :
デフォルトの名無しさん :2005/06/02(木) 01:11:03
無問題=モーマンタイ
>>277 そんなわけない。
余計な計算であることは事実なんだから。
OFFがデフォで正しい。
>>274 俺もへぼプログラマですが、日頃から同僚に氏ねって思われてるんでしょうか?orz
>>280 当たり前じゃん。
プログラマなんて自分より実力が無いのはみんなクズなんだから。
282 :
デフォルトの名無しさん :2005/06/02(木) 01:50:19
>>279 すべてのモデルをスケーリングを前処理でやれば問題ないが、
固定パイプラインの即席でできる的なコンセプトから言えば、
適当なモデルをスケーリングして回転して移動して即席表示できるべきだ。
なので法線のノーマライズは「余計な計算」でなく、「やらなきゃいけない計算」
なわけだから、ONがデフォが正しい。
最適化したい人がOFFにすりゃいい。
そういう人は、何が問題だかわかっているわけだからそれこそ問題ない。
初学者に「機能をすべて把握してから使え。」なんて強要しているAPIはアふぉでしょ。
こういうのはAPIデザインをする側の問題。同僚は悪くない。
283 :
デフォルトの名無しさん :2005/06/02(木) 01:55:49
>>282 いや、そのまえに法線知らないで3Dいじるなよ。
って時代にできたものだからな>固定パイプライン
さすがにそんなレベルの低い奴はいなかったけどな。
今は違うんだね。
285 :
デフォルトの名無しさん :2005/06/02(木) 02:44:18
>>284 昔のD3D初心者は「固定パイプライン内部の変換で法線ベクトルがノーマライズされない」ことに事前に気づくやつばっかだったか?
んなわけない。
初心者が、レンダリングステートを一通り目を通さなきゃ正常に動作しないってのはおかしいだろ。
OpenGLを見よ。「いじらなくともデフォで《正常》に動く」のがあたりまえのソフトウェアデザイン。
「いじらないとデフォで《異常》な動作をする」のは底辺プログラマの所業。
レンダリングステートはとりあえず何があるかチェックしとくもんだと思うが。
初歩的な質問ですいません。 Directx本体は英語版ですよね?? みんなそれ使ってるよね?
288 :
285 :2005/06/02(木) 04:28:52
>>286 あなたの主張からは、初心者を馬鹿にして「自分の方が上」って思いたいという思いしか伝わってこない。
でないなら、何が言いたいわけ?論旨はなによ?
289 :
287 :2005/06/02(木) 04:34:23
どうも、ヘルプだけ日本語で用意されているご様子
NORMALIZENORMALSは7からできたものだから 「昔のD3D初心者」には関係なかったけどなw
291 :
270 :2005/06/02(木) 07:12:43
自己解決。vc6.0はreadme見たら(Summer 2003)までっぽいですね。
シェーダで計算した結果を、メモリに書き戻して取り出すことは出来ますか?
293 :
デフォルトの名無しさん :2005/06/02(木) 22:40:03
>>285 はぁ?馬鹿?
異常な動きじゃないじゃん。
実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
表示はバグってないだろ。
正しい対処方は法線を表示できるようにすることであって
なんでもかんでも法線を正規化して表示することじゃないでしょ?
こういう問題をどうして正しくとらえることができないかな?
対処法間違ってるのわからないの?
レベル低すぎ。って初心者スレかw
>>292 できなくはない、というレベル。
レンダリングターゲットを用意して、そこに書き込む。
>>292 WGFからは確か出来るようになるんじゃなかったかな。
今はテクスチャにデータを載せてピクセルシェーダーで処理して
テクスチャに書き出してそれを使う。GPGPUで検索しろ。
296 :
デフォルトの名無しさん :2005/06/03(金) 01:04:35
>>293 > 実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
> 正しい対処方は法線を表示できるようにする
超〜ハズカシイやつ。
勉強不足な頓珍漢なバカはおまえだよ。何が問題かすら全くわかってない。
レベルが低すぎるのはおまえだろうがw
297 :
デフォルトの名無しさん :2005/06/03(金) 01:09:05
>>296 はぁ?じゃ、何が問題なのか説明しろよ。
298 :
デフォルトの名無しさん :2005/06/03(金) 01:21:24
>>297 何が問題って、俺が何の話しているかすら判ってない上に、
如何にも付け焼刃の知識(しかも間違っている)で頓珍漢な対処法とやらを開陳して、
人を馬鹿な初心者呼ばわりしているおまえのバカさ加減。
299 :
デフォルトの名無しさん :2005/06/03(金) 01:25:36
ステートが問題じゃなくて 法線にスケーリングが掛かったら、それが どう言う意味か知らない奴がD3Dを使用するなって感じ。 初心者とかじゃなくて、数学や技術の問題。 そもそも、スケーリング成分が無い行列をセットされるのが有り得る、もしくは大半なのに いちいち正規化するのが無条件なんてDirectXじゃなくて、非リアルタイムよりのOpenGLを使えって感じ。 (まあ、そう言っちゃてるがw) 言い換えると、int型なりshort型なりの変数に値を代入したら いちいちその型のオバーフローをチェックするのが当たり前とか抜かしてるレベルと一緒だろw 代入 -> if 型オバーフローチェック -> 変数に代入の度にデフォ 見たいな感じw
300 :
デフォルトの名無しさん :2005/06/03(金) 01:48:13
>>299 だからさぁ、固定パイプラインの話だぜ?
どこのクソ業者が今時シェーダー使わずに固定なんか使っちゃっているわけよ???
キミのところは「OpenGLなんか非リアルタイムだぜ。うちはDirectX固定パイプラインでバリバリリアルタイム」
なんていっちゃっている痛い会社なわけ?
シェーダーが主流である現在、固定ってのは初学者がD3Dに入門するためのモードって言い切っちゃっていいでしょ。
トランスフォーメーションパイプラインで法線を正規化するのかしないのかってのはAPIの実装依存ってのは判るよな?
固定だとトランスフォームしたノーマルをクライアントに返さず、そのままライティングに使うわけだ。
だからこそ、normalizenormalというユーザー設定可能なレンダリングステートが用意されている。
それはよしとして、固定の使用用途から言って、このデフォルト値がOFFである必要は全く無い。
最適化の必要ない所があえてフールプルーフになっていないのはあふぉ。
なぜなら、そもそもプロは固定なんか使わないから。
今時のゲームはシェーダーが当たり前なんですか 古いカード使ってるユーザーは無視 なわけねえよね
303 :
デフォルトの名無しさん :2005/06/03(金) 01:59:04
>>301 わかる人は判るからいいです。
> 法線にスケーリングが掛かったら、それがどう言う意味か知らない
だいたいさ、SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した
純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。
どういう実装になっているかは、運よくnormalizenormalのステートを見てそれが何であるかを意識した人だけだろう。
304 :
デフォルトの名無しさん :2005/06/03(金) 02:00:20
> 古いカード使ってるユーザーは無視 日本じゃどうしてんのか知らないけど、うちでは無視です。
305 :
デフォルトの名無しさん :2005/06/03(金) 02:00:51
>>303 大丈夫w
そんなもん運に頼って見つけるの君だけだからw
306 :
デフォルトの名無しさん :2005/06/03(金) 02:02:23
>>304 日本でもラブデスはぶっちぎりで無視でした。
語尾wくんはここでも叩かれて支離滅裂なレスを付けてるのか。 悲惨なやっちゃな
308 :
デフォルトの名無しさん :2005/06/03(金) 02:05:20
法線スケーリングされて顔真っ赤な低脳のいるスレはここですか?
309 :
デフォルトの名無しさん :2005/06/03(金) 02:06:19
初心者用と叫んで 初めから単位化された法線を スケーリングなしの行列でトランスフォームした場合でも 全てデフォで単位化するなんて方がアフォ。 プログラマとしての発想の違いとも言える。 数万頂点の法線がはじめから単位化されていて セットされる行列もスケーリングなし しかし、その数万回の単位化をなんとも思わない時点で... プロなら、シェーダー非対応のボードでも 切り替え指定で動くように作るだろw 弊社のゲームはDirectX9、対応ボード必須(256M以上とか...)、 CPU3GHz以上必須(ここは妄想だが)とか言うのがプロなの? half life2以上は期待しちゃうよ?
311 :
デフォルトの名無しさん :2005/06/03(金) 02:09:31
結局、本も読まない、買わない、OJTでしか技術は身に付けないって姿勢だから 法線スケーリングされてポリゴン真っ黒なのに、顔真っ赤にしちゃうわけだよ。ぷw
313 :
デフォルトの名無しさん :2005/06/03(金) 02:12:37
>>309 プロだったら、前処理でスケーリングして、normalizenormal を一回だけOFFにセットすりゃいいんだよ。
初心者は、normalizenormal を知らない可能性が高いっつてんだよ。
314 :
デフォルトの名無しさん :2005/06/03(金) 02:13:44
そもそも固定パイプラインって 固定の処理をハード処理して速度を稼ぐって言う 昔の非力なグラボ時代の話であって それを シェーダーが主流だから初心者用だとか APIの実装依存とか SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した 純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。 とか言っちゃうんじゃないのw 固定処理以外の部分はプログラマが指定しろって事なのに お前は、固定処理に法線のノーマライズが必要って言ってるんだぞ?グラボ会社に要求しろ それ以外ならソフト処理の問題であって固定機能とか言ってるな、ボケ
315 :
デフォルトの名無しさん :2005/06/03(金) 02:14:10
内容のないレスで空回りするのが、ここのデフォ?
316 :
デフォルトの名無しさん :2005/06/03(金) 02:20:04
> 昔の非力なグラボ時代の話であって 日本のWindows向けクソ3Dゲーの事は良く知らない。 日本にはろくなD3Dプログラマがいないということだけは知っている。 > SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した 純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。 とか言っちゃうんじゃないのw 「とか言っちゃう」って何がおかしいんだよ?説明しろ。
317 :
デフォルトの名無しさん :2005/06/03(金) 02:23:16
>>314 > お前は、固定処理に法線のノーマライズが必要って言ってるんだぞ?
>>285 から書いている通り「初心者のためにnormalizenormalはデフォでONにすべき」
っていってんだよ。何回説明したら論旨を理解するんだ?バカ。
つか、こっちの語尾wはマトモで、相手が変なのか。まぁ自作自演なら両方ともすごい変な人だがw
319 :
デフォルトの名無しさん :2005/06/03(金) 02:27:17
一見意味のありそうな議論に見えるが、 実際はAだ!Aだ繰り返してるだけの屑議論だな。 つまんね
314は今必死に matrix とextractでぐぐってます。
322 :
デフォルトの名無しさん :2005/06/03(金) 02:29:55
>>316 それをハード固定機能に求めるのか
SetTransform()内部のソフト的な部分に求めるのか混同してる
ソフト的な問題なら、今までの”パイプライン”とかの意味不明な発言の落とし前はどうするの?
>>317 お前は、”固定機能が初心者用だから”って前提を突っ込んでるのは完全無視なのか?
323 :
317 :2005/06/03(金) 02:31:02
>>319 こんなの意味なんかあるかよ。わけわかんねーよ食ってかかってきてるやつ。
おれの論旨は「D3D初心者のためにnormalizenormalはデフォでONにすべき」
であって、それ以上なにもない。
324 :
317 :2005/06/03(金) 02:34:01
>>322 > それをハード固定機能に求めるのか
あのー、
HALと、Fixed pipelineを絡めて議論する意味ってなに????
訳わかんないんですが。
325 :
デフォルトの名無しさん :2005/06/03(金) 02:36:45
>>323 アフォか
それなら、D3D初心者のために行列は使用しない
座標値と角度のみとか
角度も初心者のためにラジアンは使用しないとか
正しい要求なのか?w
326 :
317 :2005/06/03(金) 02:38:55
結局、中途半端な知識(しかも勘違い甚だしい)しかないやつが、おれの話を理解できずに食って掛かってきているってことでよろしいですね? くだらないので逝きますね。
327 :
デフォルトの名無しさん :2005/06/03(金) 02:40:55
>>マトモな人の方へ 言った言わない議論でスレ伸ばしても無意味。 それとも、スレ延ばすとあんたの収入が増えるビジネスモデルなんかい?
すげぇ下らん自作自演だったな
329 :
デフォルトの名無しさん :2005/06/03(金) 02:43:36
HALとはグラボとのやりとりの規格であって 固定パイプラインの中で処理されるH/W T&Lのハード機能とは別ものである 中途半端なのはどっちだw
330 :
デフォルトの名無しさん :2005/06/03(金) 02:46:38
それより、固定機能が初心者用なんて恥ずかしい決め付けだって指摘に 一つも反論してないよ? 無理前提を、突っ込み無視で押し通すつもり?w
331 :
317 :2005/06/03(金) 02:49:09
>>325 あのなぁ、論旨となっている使用するAPIのとっつき易さ(優れたデザイン)と、
ユーザーに求められる数学の素養くらい分けて考えろ。
「理学者は全員D3Dのエクスパート」とキミの論理は恥ずかしくバグっている。
バカ丸出し。
まぁ、お前のような奴が、三角形を一つでも表示させることができている
とすれば、D3Dは十分 "fool proof"ということだ。
332 :
デフォルトの名無しさん :2005/06/03(金) 02:52:31
いつまでやるの? 毎日が休みの人はいいな、 API設計の良し悪しなんていう どうでもいい議論で盛り上がれて
333 :
317 :2005/06/03(金) 02:53:38
>>329 > それをハード固定機能に求めるのか
>SetTransform()内部のソフト的な部分に求めるのか
これで何が言いたいんだって聞いてんだよ。
>固定機能が初心者用
だからさ、固定なんか使ってんのは今時日本のクソ3Dゲーか美少女ゲーの特殊効果だけだっつってんの。
ほとんどの初心者が最初に三角形を出すのに固定パイプラインを使うことはほぼ間違いない
。
334 :
デフォルトの名無しさん :2005/06/03(金) 02:55:30
法線にスケールが掛かると、ベクトルの大きさが変わるかも知れないって数学的な部分を 初心者用、APIデザインとか言ってるのは その数学的な素養が要らないって意味だろう? じゃ、C言語を扱うプログラマ初心者の為に C言語基本的素養は、初心者用、関数デザインとか言って 求めないのと一緒だろw
335 :
317 :2005/06/03(金) 02:56:12
>>332 悪いがこっちはまだ19時で休憩中なもんで。
336 :
デフォルトの名無しさん :2005/06/03(金) 02:57:30
>>317 お前さ、次から次に自分の理屈を言ってるだけで
突っ込み無視で、技術有ります見たいな発言繰り返すのみ、言い訳のみ、だなw
ヨーロッパかよ。すげぇ不思議なロケーション
338 :
デフォルトの名無しさん :2005/06/03(金) 02:59:20
>>324 の恥ずかしい勘違い?知識無し?の発言で
317と話す必要もなくなったなw
================================================================ 以上、ほぼ自作自演でした。週末も自作自演の予定です。 ここまで読んでくださった皆様、どうもありがとうございました。 ねぇ、僕って孤独じゃないよな? ================================================================
340 :
317 :2005/06/03(金) 03:01:18
>>334 キミさ、なんでもいいけどあたまわるすぎ。自覚ないでしょ?
もう、勝手にお吼えください。
341 :
317 :2005/06/03(金) 03:02:50
そう、脳内ヨーロッパの脳内ゲームの脳内ソフトハウスに脳内駐在中です。
342 :
デフォルトの名無しさん :2005/06/03(金) 03:20:55
>ほとんどの初心者が最初に三角形を出すのに固定パイプラインを使うことはほぼ間違いない。 だから、固定パイプラインは初心者用? ウルトラ頭悪いねw 一応サンプルブラウザーにはビギナーレベル指定でベーシックHLSLなんてサンプルが有るんですが? チューリアルの初心者以前、これから入門しますってレベルで物を言って そのレベルでAPIデザインとか抜かしてるんだろうか...
>>342 うざいよゲー専門学校生が。お前だろ初心者はw
恥ずかしすぎるぜこいつ。
スーパークリエーター
>>317 を
尊敬するぞ
尊敬するぞ
尊敬するぞ
尊敬するぞ
固定でも互換にできちゃうような処理しかしてねークソゲー だったら、はなっからシェーダーなんか使わねーで固定で書いてろ。
つまり固定で書かれているFFXIは初心者プログラマが作ってるのか。 ターゲット環境を低くするために、わざとやってるのかと思ってた。
347 :
デフォルトの名無しさん :2005/06/03(金) 08:10:43
馬鹿な糞餓鬼が法線スケーリングされてファビョってるスレはここですか?
347みたいなのって、もういい加減はずかしい。
質問です。 VC++7.1のReleaseのデバッグ無しで開始のみ面が描画されません。 デバッグ開始だと描画されます。 原因がさっぱりわかりません。 Direct3DのDebugモードとRetailモードで試してみても結果は同じで やはりデバッグ無しで開始だと面が表示されません。 ReleaseじゃなくてDubugだと問題ありません。 解決方法を知ってる人がいたら教えてください
法線をスケーリングするとおかしくなるのはなぜに? 法線で重要なのは絶対値じゃなくて向きでしょ。 法線を単位ベクトル化しても、ベクトルはベクトル。向きは変わらないんじゃないの・・・? ちがうの?
>>350 問
正規化されていない法線A、Bがあります。
この法線どうしの角度を求めよ。(cosθでもよい)
こういうバカのためにもnormalizenormalsはデフォルトでオンになってたほうがいいな
正規化って平方根の逆数だから結構重いよな。 でもGPUって極端な話レイテンシが1000であっても スループット1なら別に問題ないんだよな。 つまりガンガン正規化してもOKってこと?
>>349 自分のプログラムを先頭から最後まで、100回見直す。
おれなんか未だに固定少数でニュートン法で平方根求めてます。 痛いです。
356 :
名前は開発のものです。 :2005/06/03(金) 13:04:09
俺の疑問、質問にだれか答えてくれ。 1.DrawPrimitiveUP、DrawPrimitiveの違い。 速度で、DrawPrimitiveUP < DrawPrimitive な理由は、DrawPrimitiveUPを呼んだあとに、頂点情報をGPUに転送して 描画待ちをしているせいなんでしょうか? DrawPrimitiveは、頂点バッファのアドレスを指定してあとはDMAで頂点を 転送しているから描画待ちをせずに並列で処理できるから早いってことでしょうか? 2.半透明ポリゴンのソート方法 半透明ポリゴンのソートをポリゴンの頂点座標を透視変換して計算した Zの値0.0〜1.0で比較してソートしているんだが激しく遅い。 0.0〜1.0を100分割して 0.01刻みでバケツソートしても遅い。 高速化する方法ってどんなのあるでしょうか?
>354 4回目で直りました。thx
>>349 もう直ったようだが、DebugとReleaseで動作が変わる場合は
まず変数の初期化がらみだと思っていい。
>358 仰るとおりでコピーコンストラクタの部分でした
361 :
356 :2005/06/03(金) 18:27:21
>>359 ソートのアルゴリズムっていっても
バケツが早いとおもうんだが、クイック、バブル、2分どれもだめだとおもう。
他にあるならおしえてくれ
例えば50頂点のモデルがあったとして、 途中で53頂点と3頂点追加したい場合はどういう風にすればいいのでしょうか? 全部最初から頂点バッファを作り直さないで、 バッファのサイズを変更して3頂点だけ追加したいのです。
⊃DrawPrimitiveUP
>>362 頂点インデックスとか法線とかどうすんの?
365 :
362 :2005/06/03(金) 23:55:03
DrawPrimitiveUP+std::vectorで出来ました でも数万ポリゴンのモデルだとOpenGLより明らかに描画速度が遅いです
内部で作り直しが行われていようと、 自分が見えないところでやる分には構わないのか。 馬鹿の考えることはさっぱり分からん。
367 :
左利き :2005/06/04(土) 00:09:28
すいません、 DirectXとの質問とは違いますが、 VideoCaptureの列挙子が記述されている レジストリのある場所を知っている人はいませんか? DirectXを使ったライブラリを使っているのですが、 そのライブラリは VideoCaptureが2つあってもデフォルトのほうしか使えないので、 レジストリでデフォルトの設定を変えたいのです。 お願いしますm(_ _)m
一つの軸による回転のみの行列から角度を得ることは 容易に出来そうですが、 任意軸による回転行列から角度を得ることは可能でしょうか?
角度を得るのは簡単だが、答えが複数あるというだけの話。
>おれなんか未だに固定少数でニュートン法で平方根求めてます。 _mm_sqrt_ps使うか、_mm_rsqrt_psで逆数求めて_mm_rcp_psで逆数にすると 平方根が4ついっぺんに求められる。精度低い代わりに速い。
質問のフリ荒らし:書くことはないがスレの流れが気になって仕方なく とりあえずスレ違いにはならないとおもわれる範囲で 質問・同意を得る形式でレスをすること。 答えがどうあろうとレス稼ぎが問題なので単発で終わることが多い。
DirectShowを使って、複数の静止画からaviファイルを作成するにはどうしたらよいのでしょうか?
まずプログラムを書く。
375 :
デフォルトの名無しさん :2005/06/04(土) 12:15:15
DirectPlayが廃止されるそうですが次はIndigoですか? それとも別のなにか?
WinSock
キーボードを叩く。
指の筋肉を動かす。
マジレスすると、まず検索サイトで調べる。
>>373 マルチいくない。
DirectShowスレで回答もらってんだから、こっちはもう終わり。
マルチ投稿見つけたら回答しないようにしましょう。 場合によっては少し叩いてやりましょう。
384 :
デフォルトの名無しさん :2005/06/05(日) 14:58:21
メモリリークしてるから Release() し忘れてるところを探すといいよ。 あと、Alloc ID ってのが出てるはずだから、 Dxコンパネで Break On AllocID にその値を指定すると 幸せになれるかもしれない。
vector a(1,0,0) と vector b(0,0,1)で 外積を求めたら(0,-1,0)になりますが、 外積は右ねじっていいますが、違うんじゃ
左手座標系なら左手の法則だよ
>>385 dクス いけました
Break On AllocIDに値を入れてブレークしてくれたけど アセンブラわがんねorz
ずっと騙されてた。何故、今まで上手くいってたのだろう。
391 :
40 :2005/06/05(日) 17:09:48
なにげにおいらも幸せになれたわー
392 :
デフォルトの名無しさん :2005/06/05(日) 22:46:12
質問です。 簡単なゲームを作ってみようと思い、DirectXを始めてみました。 とりあえずwebにあったものを組み合わせてビルドしてみたのですが、 リンクするときに、 「dinput8.lib(dilib2.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください link.exe の実行エラー」 と出てしまって、ビルドが完了できません。 dinput8.libを作り直せば良いのかと思ったんですが、ソースが見当たりません。 どうすればいいのでしょうか? また、同じような状況になった方はいらっしゃいませんか? よろしくお願いします。
393 :
392 :2005/06/05(日) 22:50:33
書き忘れましたが、SDKは9.0c(2005April)、開発環境はVisual C++ 6.0です。
まずはリリースノートを読みましょう。 そこに全て書かれています。
DirectX以前の問題なのにね
396 :
392 :2005/06/06(月) 01:06:10
>>394 >>395 お返事ありがとうございます。
解決しました。
デバッグ情報作れないんだったら、作んなきゃいい話なんすね。
DirectXの問題どころか、IDEの扱いかたっつーか日本語が読めていませんでした....orz
で、ちょっと気になったんですが、これってリリースノートに書いてあるんですか?
自分が見た限りでは見つけられなかったんですが....
リリースノートを見ろ。 話はそれからだ。
ここは日本語が通じないインターネットですね
>>398 あんまりくだらない質問ばかりする初心者&人を見下す態度を取る返答者の争いが
絶えないのでとうとうスクリプトになってしまいました。
ちょっと使い難いかもしれませんが我慢してください。
400 :
デフォルトの名無しさん :2005/06/06(月) 03:44:14
>>399 初心者スレで初心者なりの質問がきて、「くだらない質問」などと言ってんじゃない。
>人を見下す態度を取る返答者
まさしくおまえのことだ。
>>400 ここは日本語が通じないインターネットですね
402 :
デフォルトの名無しさん :2005/06/06(月) 05:41:05
最近は質問する側の態度もでかいのが気に入らないな。 ホントにこんな質問してる奴が俺等に還元するようになるのかねぇ? とか本気で思う。 ま、絶対、ならねぇだろうな。
嫌なら回答しなきゃいいだけ。君が答えなくてもべつの答えたい人が答えてくれる。 初心者相手に見返り期待してないでどうぞ上級者のあなたにお似合いなレベルの高いところへお行きください。 さいなら。
>>403 俺のレスが気に入らないならスルーすればいいだけ。
嫌なら相手にしなくて結構。
懐古ってわけじゃないけど、昔は質問への回答なんてそこまで重要なことではなく
むしろ勉強するにあたっての姿勢を大事にする傾向があった。
どのぐらい頑張れば自分のめざすことができるようになるんだろうとか
そういうのが回答からわかった。
ゲームPGの技術力の高さは掲示板でそういうところまで
面倒を見てくれるところで支えていたと思うんだけどね。
ところがこの質問スレはそういうのがないから、最近の初心者は損をしてると思うんだよね。
俺が先人(主にPS世代の人かな)から受け継いだものなんて、そんなものだけど
お前等がいらないっちゅーなら、それもアリだな。と思う。
初めて何ヶ月目か知らんけど、カワイそうだけどこんなペースじゃ一生かかっても俺にはおいつけないだろうな。
俺等の頃にあって、今無いものの差はかなりでかいぞ。
全角英数字使う自称プログラマは、高確率でワナビーの法則 説教好きが2ch全体に増えている これはこのスレに限った事じゃない
お偉い先人から何かを受け継ぐと404みたいにキチガイになってしまうのですね。 受け継がなくて良かったです。というか何を受け継いだのでしょうか。 404の書き込みから何が伝わってくるのでしょうか。 伝わってくるのは間違いなく404はキチガイであるということだけです。 ここは404なんぞいなくても今まで通り粛々と進んでゆきます。 さようなら404。
>>404 ここは質問スレだ。質問と回答以外必要ねーんだよ。
なにが「スルーすればいいだけ」だよ。
テメェがスレ違いなどうでもいい昔話をご高説なさってるから邪魔だって言ってんだよアホ。
背中に「↑バカ」って張り紙されてるタイプだよお前w
ここは聞く奴も馬鹿なら 答える奴も馬鹿で結構バランスとれてるよ。
雑談の時だけ加速するッ ちょっと気になる流れだったから話戻していい? Summer2004以降はVC6はサポート外になったけど、 ExtrasのVC6用D3DXファイルに差し替えればとりあえず動くよね。 今はVC6+Oct2004にしてるんだけど、なんか問題あるかしら? 海外サイト見ると一応イケるっぽいんだけど・・・
サポート外の物にサポートを期待するな。
期待はしてないよ。 ただ、わざわざVC6用のファイルを残しているから 完全に切り捨てたというより互換性を気にしなくなっただけなのかな、と思ってね。 回避できない致命的な問題がなけりゃそれでいいの。
VC6を未だに使い続ける理由ってなんだ?
vc6で何も困ってないんだけど。 逆に.netにしなきゃいけない理由って何。
エディタの性能がいい
>>415 インテルコンパイラ用の最適化機能と新規格の準拠度
VC6 は new が NULL 返すのがなぁ...。 STL 等のライブラリは new が bad_alloc 投げることを前提にしてるから、 NULL チェックされとらんのよな。 bad_alloc を投げるようにハンドラ変えてやればいいんだけど。 あと、static const int メンバが直接初期化できないから enum を使わないといけなかったり。
SSE/SSE2対応。
>>415 とりあえずboostでコンパイル通るコンポーネントが飛躍的に増えること。
これだけで導入の価値は充分にある。
あとVC6ではテンプレート周り、とくに特殊化/部分特殊化に関連するバグには
かなり悩まされてきたが、VC7.1ではほとんど修正されてる。
まあ、今更.NETを買うよりは2005、もとい8.1を買う方が良いと思うよ
今なら只だしな
7.1よりさらに重い気が… ベータ初期しか試してないが、多少は良くなったのかね
β1に軽さを要求するってお前は本当にプログラマなのかと(ry
alphaならともかくbetaなら仕上がっていて当然だと思うが
beta ってのがどこまでできてるかってのは、 国や組織によっても認識が違ってたりするからなぁ。
いや普通に評価版だろ どこでも
>>420 7.1でも部分特殊化はイマイチだ
8買っちゃうかも。
8も只当然版は出るのかな〜
VC++て2万円程度だろ。そのくらい出して当たり前では。。。
買うなら VS だよなぁ。
432 :
デフォルトの名無しさん :2005/06/07(火) 03:41:51
「βはリリース目前」が世界の常識。
いまさらだが、VC6の全エディションからVS.NET Professional 2003に 3〜4万円くらいで乗り換えれたよ。VBやVJ等でも可。 もう1年前にキャンペーン終わってしまったが。
最近ら抜き言葉をよく見るなぁ
ら なんか(゚听)イラネ
「〜の方が」を「〜のが」とかいうバカのが気に入らない。 「ディテール」を「ディティール」とかいうバカも気に入らない。
>>436 「ディテイル」もしくは「ディーテイル」
別に発音に正確にという意味じゃねーんだよバカ。
あいぐまスカル
そこらのゲイどもよりこのハードゲイ様のが素晴らしいんだぜオッケイ ディティールが違うんだよディティールがフォー
フゥ―――――(●∀●)―――――ウ!
初心者に毛が生えた荒らしが、 自作自演で質問ゴッコするスレ
443 :
デフォルトの名無しさん :2005/06/09(木) 22:30:56
age
444 :
デフォルトの名無しさん :2005/06/10(金) 14:15:25
頂点配列をSTLのvectorでやる場合の問題とか気をつけることって何かありますか?
特に思い浮かばないが。
vectorの要素が変化するとメモリの再アロケートが起きるから パフォーマンスは気にしたほうがいい。
俺、vectorの再アロケートではまったことあるなぁ・・・
reserve呼べば済むハナシ
つか、とりあえずスレ違いじゃね?
> vectorの要素が変化するとメモリの再アロケートが起きるから 「vectorの要素数が上限を超えると」だろ。 要素が変化するごとに再アロケートなんかおきてたらスパコンでも使えんわそんなもん。
要素の追加、削除をするだけでもリロケート起きたような・・・ 毎回起きるわけでもないみたいだけど。
キャパが増えるとキャパを一定量増やして再アロケートするだけじゃないかな。 効率気にするなら reserve しときゃええ話やね。
他のDirectXアプリのフルスクリーンの手前に 文字やグラフィックを表示することはできますか?
できるよ。
何気にJune2005からD3DXの単体配布OKになったんだね。
処理速度調べようとこういうプログラム作ったのですが
http://gamdev.org/up/img/2757.zip 以下の内容を100万回施行
移動して、徐々に透明になる事を想定してのプログラムです。
1、テクスチャを描画、板ポリを生成、描画
2、板ポリ生成、描画
3、板ポリ描画
4、板ポリ描画(Lock版)
だいたい速度が同じなのですよね。
作り方がおかしいのでしょうか?
それとも、こんなもんなのだろうか・・・
Effective C++見るとみるからに変わってるんですがね
457 :
456 :2005/06/11(土) 19:28:58
レスががが。 もしや、クラッシュさせてしまったのかっ!!
>>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
正直このテストで何を知りたいのかわからない俺がいる
Releaseで何も設定をいじらずに実行 AthlonXP2500+ Radeon9600np DirectX9 april VC7.1 Time1 29627 Time2 30479 Time3 10981 Time4 10163
同じくReleaseで何もいじらずに実行 Pen4 1.8GHz Radeon9600 SERIES VC6 Time1 46553 Time2 46654 Time3 11250 Time4 11690
463 :
456 :2005/06/12(日) 02:18:56
おお、実行どもです 結果が大きくちがいますね。なんでだろう。 Athlon1.8GHz Geforce256で 一律4000でした。 プログラムは問題なさそう。なのか? 1,2は リスト構造の中に予めVertexBufferを入れるか 描画する時にだけVertexBufferを生成するかどうか (クラスの設計をどうしようかと考えていたので) 3,4は データを上書きするのと Lockしてデータを書き換えるのとは どっちがパフォーマンスがいいのか?というのが目的です。 メモリの問題はとりあえず後回しとして。 実行してくれた方々ありがと〜。
464 :
456 :2005/06/12(日) 02:28:46
一律40000だた
Athlon2500+とFX5200 128Mで一律50000… やっぱグラボって重要なんだね…
>>456 起動した瞬間固まる。。。
Win2000、RADEON9100、1GB
>>467 それ、重すぎて画面に表示できてないよ。
数分経つと正常に終了するから
400万回ループしたのちに 終了するようになってます。
470 :
デフォルトの名無しさん :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)
>>470 そのメッセージをexcite翻訳すると
>Direct3D参照ラスタライザを切り換えて、全体のDirect3Dの特徴を実装するソフトウェアデバイスは、非常にゆっくりセットしますが、動きます。 あなたは続きたいですか?
ノートパソコンの時点でまさかとは思うが、ビデオカードが無いとか言わないよな?
473 :
デフォルトの名無しさん :2005/06/12(日) 22:09:34
あー、ビデオカードは入ってないと思います。 以前はちゃんと動いてたので多分問題は他にもあるかと思います。
>>473 コンパネからDirect3Dの設定を変えてみるとか。
476 :
デフォルトの名無しさん :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) はデバッグ版です。製品版より遅く動作します。」
と出ましたが、これって影響ないんでしょうか?
>>476 だからコンパネでDirect3Dの設定を変えてみなよ。
Emulate reference rasterizer
とかの項目を切り替えたり、Debug/Rereaseモードを切り替えたり。
478 :
470 :2005/06/12(日) 22:52:51
設定色々変えてますが、あまり変化が無いように見えますね。 やっぱり、ノーパソでやること自体が無謀なんでしょうか(^^;
最近のノートは凄いと思うがな・・・
480 :
470 :2005/06/12(日) 23:15:55
とりあえず以前動いてたから何かすれば動くハズだと思います。 ご教授ありがとうございました。 再度一人でがんばってみます(^^
↑のスペックなら必ず動くな・・・(漏れのノートとは比べ物にならない・・・orz)
482 :
デフォルトの名無しさん :2005/06/13(月) 11:46:56
Z軸で奥にある物が、手前にある物の上に描画されてしまいます。 SetRenderState(D3DRS_ZENABLE, TRUE)は書いてるんですけど、 これ以外にも何か必要なものとかあるんでしょうか?
SetRenderState(D3DRS_ZWRITEENABLE, TRUE)
デフォルトでTRUEじゃなかったか? 単に精度の問題とかじゃ?
485 :
482 :2005/06/13(月) 12:39:33
SetRenderState(D3DRS_ZWRITEENABLE, TRUE) を書いてもだめでした。
CodeGuruのサンプルを参考にしつつ勉強中な初心者からありがちな 「画面一杯に1枚絵を表示」する方法の質問です。 クライアント領域640x480のウィンドウに同サイズのテクスチャを 画面ぴったりに表示させようとしています。 で、表示自体は出来たのですが、各ドットが補完されボケて表示されて しまいます。 SetTextureStageStateでD3DTEXF_NONEやD3DTEXF_POINTを指定すると ボケた上に端々が汚く、D3DTEXF_LINEARだと綺麗だけどやはりボケます。 (↑これは当たり前ですが) 補完無しでくっきりと表示させる方法を教えて下さい。 orz オナガイシマス
なぜ普通に聞けないのですか。 orzとかオナガイシマスとか、いい加減恥かしくないですか。 礼儀というものを知らないのですか。 いつからそういったものを覚えたのですか。 そういうノリだと誰かが教えてくれると思ったのですか。
D3DXSprite 使うと良さげ?
テクスチャ作成時にD3DXを使っていて、イメージと作成可能なテクスチャサイズが合わない場合に 勝手にイメージが拡大されるのを知らないってオチが大半やねこの場合。 あとは頂点座標を-0.5ピクセル分ずらすとか、UV座標を+0.5テクセル分ずらすとか。
>>488 ID3DXSpriteの存在を本気で忘れてました
単純な矩形表示ならこっちの方が相応ですな…
ちょっと調べてみます。マリガトウ
>>487 つ● ウンコドゾー
>>482 射影行列のZnをいくつにしてる?
>>490 せっかくいい線まで行ってるんだから、ID3DXSpriteなんて使うな。
原因はたぶん489の言う通り。
描画以前に読み込み時にテクスチャがボケてる。
492 :
486 :2005/06/13(月) 16:33:06
>>489 >>491 489氏のレスみてテクスチャ座標を0.5テクセルずらしたらSetTextureStageStateの
D3DTEXF_NONE時の表示がだいぶマシになりました。
後はD3DXCreateTextureFromFileを使ってるのでご指摘の通りかと思われます。
D3DXCreateTextureFromFileはCodeGuruのサンプルをそのまま使ってた
だけなので、これをCreateTextureに置き換えてみます。
回答有難うございました。
ノシ
>>486 D3DXCreateTextureFromFileExを使え。
494 :
486 :2005/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`;)
495 :
482 :2005/06/13(月) 19:10:38
>>491 D3DXMatrixPerspectiveFovLH()のことですよね?
Znは0.1fです。
かまととぶってんじゃねーよ気持ちわりぃな。
>>494 テクスチャ座標を1.0にしてない?
たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
1024*512のテクスチャが作成されている。
D3DXCreateTextureFromFileExの後にサーフェスのサイズからテクスチャ
座標を計算する必要がある。
(1024*512と決め打ちするなら、640/1024,480/512をテクスチャ座標に)
498 :
486 :2005/06/13(月) 20:15:23
>>497 できました!
座標直したらドット単位くっきりな画像が表示できました。
今しばらく勉強してみます。
皆さん有難う。( ´∀`)ノシ
>たぶんD3DXCreateTextureFromFileExで640*480の画像を読み込むと
>1024*512のテクスチャが作成されている。
この動作知りませんですた。サイズは512Pixel毎?
手持ちのDX9ヘルプにも見当たらないような…
氏ねよ上っ面野郎
501 :
デフォルトの名無しさん :2005/06/13(月) 20:34:15
すみません、初めて質問するのですが、directxを使って音を出したいと思っております。 ネットを見てもファイルを再生する方法はよくありますが、そうではなく、その時々で任意の音を出したい のですがどなたかご存知ではないでしょうか。よろしかったら教えてください。
ストリーミング再生のやつを応用して、 WAV データを自前で生成しつつ再生すればいいと思う。 ストリーミング再生の資料は多少はネット上に落ちてる筈。
503 :
デフォルトの名無しさん :2005/06/13(月) 20:40:05
>>502 本当にありがとうございます!!さっそく調べてみます。
504 :
482 :2005/06/13(月) 21:12:42
すいません解決しました。 SetViewport()をやるときに、 D3DVIEWPORT8構造体のMinZとMaxZに値を入れてませんでした。 ありがとうございました。
>>486 テクスチャは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.
DrawPrimitiveUP と DrawPrimitive の違いがわかりません。 だれかもしえてください。
508 :
デフォルトの名無しさん :2005/06/15(水) 14:40:35
DDSCAPS_TEXTUREで作成したDirectDrawサーフェスに対してカラーキーをセットして、 DDBLT_KEYSRCフラグでBltするとMillennium G450では正常に表示されるのに、 NVIDIA GeForce FX 5700だと正常に表示されなくなります。 解像度やカラー深度は一緒です。ちなみにBlt関数ではS_OKが帰ってきます。 また、DDSCAPS_OFFSCREENPLAINでサーフェスを作成したり、 カラーキーを無効にするときちんと表示されます。 このような経験がある方がいたら教えてください。
深度は16bit?
510 :
デフォルトの名無しさん :2005/06/15(水) 22:43:45
>>508 そうです。R5G5B6のピクセルフォーマットにしたがって指定しています。
サンプルにあったように取得したサーフェスの左上にカラーキーにしたい色味を描画して、
Lockしてメモリを読み出し、実際に描かれた色味を指定しています。
DDSCAPS_TEXTUREフラグで作成したサーフェスに対して、カラーキーを含むBltのみが
おかしいようです。
ちなみにドライバを更新したときに、拡大Blt(転送先矩形が、転送元矩形より大きいBlt)で
カラーキーが境界部分で表示されてしまうバグが解消されたくらいなので、
テクスチャとして作成したサーフェスが転送元となるBltは想定していないのかもしれません。
戻り値にS_OKは返してほしくないですね・・・。
レス番間違えた・・・orz
あ、あとDirectX7です。
>R5G5B6 ?! R5G5B5とかR5G6B5じゃなくてか? プライマリサーフェスのCapsを確認してみ
514 :
デフォルトの名無しさん :2005/06/16(木) 00:31:43
すみません!R5G6B5でした。確認しました。
// カメラの前後ろどちらに木があるか if( 0 > ( m_Trees[i].vPos.x - m_vEyePt.x ) * g_vDir.x + ( m_Trees[i].vPos.z - m_vEyePt.z ) * g_vDir.z ) DirectXサンプル、ビルボードの引用なんですが、 カメラ位置から木の位置までのベクトルの正規化なしで、 内積取っても、前後判定できないような気がするのですが。
>>515 必要な情報は内積の結果の符号のみだから、
ベクトルの大きさは関係ない。
一度図と式を書いて確認しとくといいよ。
正規化の意味分かってないんじゃないの? そうじゃなきゃ一からベクトル勉強し直せって感じだが
>>515 P・Q=|P||Q|cosα をもう一度よくじっくり考えてみよう。
ベクトルの大きさによらず、結果が正か0か負かだけで分かることがあるよな?
519 :
デフォルトの名無しさん :2005/06/17(金) 13:36:44
DirectX8のD3Dのテクスチャで質問です CreateTextureで空のテクスチャを作った後で、これに画像をBITMAPハンドルから 読ませる方法がわかりません GetDCは無いし… これを実現するAPI名を教えて下さい
つ[GetDIBits] つ[LockRect]
521 :
519 :2005/06/17(金) 13:59:53
>>520 LockRectを確認しました
有難う御座いました
522 :
デフォルトの名無しさん :2005/06/18(土) 13:42:30
SDKをインストールするとデフォでCドライブの直下に『DXSDK』というフォルダができていたはずなんですが、 どれを入れてもプログラムファイル内に『Microsoft DirectX 9.0 SDK (June 2005』などといったフォルダしか作られません。 これらだとヘッダーファイルの一部が見つからなかったり、コンパイルができても Direct3D9: (ERROR) :Unsupported min filter. Direct3D9: (ERROR) :Invalid texture sampler state value. SetSamplerState failed. のようなエラーが出てしまいます。 落とすファイルを間違えているのでしょうか?
> デフォでCドライブの直下に『DXSDK』というフォルダが いつの時代の人ですか・・・
524 :
522 :2005/06/18(土) 14:55:48
何をインストールしたか分かりませんが、9.0bでは『DX90b』や『DX90SDK』だったかな? 今まで9.0bをベースにupdateを加えていったので環境としては9.0cになっていると思うのですが、その大元のファイルがどこにあるのか・・。
インストール時に場所を指定できるしもちろん表示されているが、 文字すら読めないのなら諦めた方がいい。
>>522 何を言ってるのかよく分からんのだが、SDKをどこのフォルダに
インストールしたのか自分で分からんってこと?
527 :
522 :2005/06/18(土) 15:22:10
>これらだとヘッダーファイルの一部が見つからなかったり、コンパイルができても >Direct3D9: (ERROR) :Unsupported min filter. >Direct3D9: (ERROR) :Invalid texture sampler state value. SetSamplerState failed. >のようなエラーが出てしまいます。 です。 バージョン違いでコンパイルができないのならそのエラーが起きている関数を変えることで直すことができますが、今回(上記)のようなのはどうしたらいいのか分からず質問しにきました。
Summer2004以降あたりからはデフォルトではProgram Filesに入るはずだ。たぶん。 VS入ってんなら自動的にパスも設定してくれるはずだ。たぶん。
529 :
522 :2005/06/18(土) 15:27:49
追記 今まではCドライブ直下にあるSDKのフォルダの中にあるincludeとlibだけを指定するだけで問題なくコンパイル→実行ができました。 June 2005のinclude・libフォルダだけだと一部のヘッダーファイルが見つからない、Summer 2003を加えると上記のエラー。
530 :
デフォルトの名無しさん :2005/06/18(土) 15:28:22
>>522 だからバージョンが変わったから関数の使い方が変わっただけじゃないの?
ヘルプ見て見たら?
別にファイルが無いよとかそんなこといってないんじゃない?
>>522 OSを再インスコ、June2005をインスコ。
これで万事解決。SetSamplerStateのエラーはどっかの過去Verで引数の数が変わったんだろう
532 :
522 :2005/06/18(土) 15:36:06
すみません、 d3d9.libが見つかりません でした。
HDDを検索すれば見つかります。
単純にパスの設定し忘れだろう。 9.0cの頃からlibフォルダやincludeフォルダは C:\Program Files\Microsoft DirectX 9.0 SDK (リリース年月)\Include C:\Program Files\Microsoft DirectX 9.0 SDK (リリース年月)\Lib に変わったから
535 :
522 :2005/06/18(土) 16:02:37
>>531 それをやった結果が現状・・。
>>534 それを設定してますが今までは問題なかったのに今回は(略
>>533 [Lib]
└x64
└x86
この2つのフォルダの中にファイルは確かにあります。
537 :
522 :2005/06/18(土) 16:43:16
>それを設定してますが今までは問題なかったのに今回は(略 分からないというほうが問題としては簡単なんですがね(´・ω・`) 一体何が原因なんだろ、03夏を入れて出てくるエラーの内容もさっぱりだし。
>>537 な ん で 0 3 夏 を 入 れ る ?
539 :
522 :2005/06/18(土) 17:01:28
>>538 そうしないとコンパイルが通らないからですよ(´・ω・`)
後者のエラーについてはSetSampleStateが原因でした。
終了時にreturn (INT)msg.wParam;を実行すると
Direct3D9: (ERROR): [0] : Address 00000000 ←16進
[1]
:
:
と出力コマンドに表示され続けて終わらなくなりました。
直接実行させると問題なく終わりますが、デバッグだけ・・メモリの開放ミスでしょうか?
540 :
522 :2005/06/18(土) 17:03:07
>>539 の終了時に以下は別の問題です。見辛くてスマソ
> そうしないとコンパイルが通らないからですよ(´・ω・`) 該当部分を修正すればいいだけの話だろ。 何故直さない?
542 :
522 :2005/06/18(土) 18:17:09
>>541 >>527 ヘッダーファイルじゃなくて正しくは d3d9.libが見つかりません です。
>>543 つ[【C++】 DirectX初心者質問スレ Part4【C++】]
VisualC++初心者スレッドに行った方がいいんじゃ。
546 :
522 :2005/06/18(土) 18:59:49
>>543 って言われても(´・ω・`)
>>545 バージョンを前にすると通るからJune2005の問題かなと思っているのですが、VC++の問題なのでしょうか。
>>546 だからパスを設定しろ。
VC++ ディレクトリって言葉知ってるか?
548 :
522 :2005/06/18(土) 19:17:09
>>547 何度も言うけど設定してるって。
やらなきゃ前のバージョンのコンパイルもできないし。
流石にここまで来ると荒らしだぞ
もうDirectX以前の話だろ バカも休み休み言え
ライブラリが絶対パスで指定してあるとかいう間抜けなオチでは?
VC6だったりして
もしかして\Libで止まってないか? 535で気付いてほしいものだが
554 :
522 :2005/06/18(土) 20:31:02
>>553 ありがとうございます、原因はそれだったようで○| ̄|_
フォルダを指定したら自動的に判断してくれているものと思ってましたが、自分で決めないといけないとは・・。
>>551 そのまま指定すると絶対パスになりますが今まで不具合が出たことがありません。
相対パスにしないと何か問題が起きるのでしょうか?
無能すぎ
リアルじゃ見れない品、こんなアホ レアなもん見れたと思えばいいじゃん
>>556 547と553の意味は別々だろ
混同してたらお前も522と同類
559 :
デフォルトの名無しさん :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) ); この関数で後に設定したほうが先に設定したほうを上書き?してるようでした 三角形を複数表示しようと思った場合、普通はどうやるのでしょうか?
今回の問題ってVCの問題だろといい続けてた奴らいるけどDirectXのディレクトリ構造が分かってなかったのが問題だよな? あくまで”DirectXのlibファイルの場所"を勘違いしてたってことでVCの設定の仕方が分からなかったわけじゃないみたいだし DirectX初心者に優しくないなこのスレ
561 :
559 :2005/06/18(土) 21:51:26
1つ目 SetStreamSource(一つ目のデータ SetFVF DrawPrimitive 2つ目 SetStreamSource(2つ目のデータ SetFVF DrawPrimitive とすることで解決しました、すみません
562 :
デフォルトの名無しさん :2005/06/18(土) 21:56:45
>>560 わかってなかったわけでもないだろ。
ただの確認不足。
頑なに自分の間違いを疑わず、
こうなるはずだ。等と思い込みで勝手に突き進んでたのが問題。
こういう馬鹿は成長しても結局同じ事を何度も繰り返す。
ここで潰しておいた方がよかった。
>>562 確認したら俺の持っている本は全部IncludeフォルダとLibフォルダを指定するとしか書いていないぞ。
そもそもインストール時にパスは自動設定されるはずだが。
566 :
563 :2005/06/18(土) 22:17:23
>>564 語弊があったかもしれんが、なぜSDKディレクトリの登録をしなければいけないのかやそれをすることによってどういう働きをするのか書かれていない。
そこから始める人にその時点で覚えさす必要はないが、書かれていない以上IncludeとLib両フォルダを登録しなければならないとだけ覚えていれば十分だと思う。
今まで自動設定なんて親切なことしてくれなかったぞ。
568 :
デフォルトの名無しさん :2005/06/18(土) 22:22:23
>>565 同じく自動的にパスの設定をしてたってことはないな。
ちなみに.NET。
DirectXになんて手を出す時点で”初心者”ではないとおもうが。 それとも初心者が出を出してしまった結果がアレなのか
VS.NET2003で確認した結果、SDKをアンインストールするとパス設定が自動的に消去され、 インストールし直すと再びパスが設定し直されていた。
>>570 アプリを作って公開し、叩かれたらやっと脱・初心者( ´ー`)y―┛~~
>>565 2台のPCで確かめたら1台は設定されたがもう一台は変化なし。
>>571 をやってみたが設定されなかったほうは再び設定しなおされることがなかった。
>>570 PC初心者とDirectX初心者の違いもわからないのか?
>>573 PC初心者ならわかるが、DirectXに手を出すってことは当然通常の(?)プログラミングは知っていて
当然インクルードパスやライブラリパスなんて知ってるだろ。
>>574 学校である程度プログラムを習ったからゲームを作ってみたいとか考えてる輩は知ってて当然とはいいがたいな
最近は昔と違って随分敷居が低くなってるからその辺の当然を求めるのはどうかと思うぞ
Flashでイラストをプログラム制御してたのがきっかけで、その延長でDirectXを始めてたからそのときは知らなかったなぁ。 昔はどういう順序でプログラミングに入っていったんだろ。
x86とx64の違いって何なんですか?32bitか64bitかってことですか?
578 :
デフォルトの名無しさん :2005/06/19(日) 00:46:07
age
あとXfree86とX68というのもあるぞ、ヤヤコシイ
日曜プログラミングレベルだと、Win32とかすっ飛ばしていきなりDirectX始めたり Javaすっ飛ばしていきなりiアプリ始めたりするやつはいるわけで、 それ自体は悪いことではなかろう。パラシュート勉強法なんて言葉もあったが。
悪い事じゃないにしても、独学をちゃんとして欲しいね。
独学なんてチグハグな知識の代名詞みたいなものなのに……
IDEでしかプログラム作れない奴らって、 コンパイラの挙動が分かってないよな。 インクルードパスやライブラリパスなんて コンパイラを直に使ってたら否が応でも 分からないとならないだろ。
そうでもない。IDE利用の有無より、本人の素養や環境の問題だ.
Linux環境でgccをコマンドから使っていても、 > インクルードパスやライブラリパスなんて 知らなくても何の問題もなく使えるが。 こういうことを言う人間ってリアルの方でも、 ろくに他の環境を知らないで、知ったかで適当をほざくんだろうなあ。
アフォか。 gccでインクルードパスやライブラリパスを知らないで、問題が出てこないはずないだろ。 Hello worldでもコンパイルしてろ。
それはIDEでも同じこと
XファイルのAnimationKeyのアニメーションオプションに オープン、クローズとあるのですが、何なんでしょうか? 検索しても、全く引っ掛からないし、対して重要で無い項目だったり しますか?
>>589 アニメーションがループするのか止まるのかの違いじゃね?
パス知らないでgcc・・・? おいらびっくりしたよ!
その程度でびっくりできるなんて、無知だと毎日が斬新に思えるんだね。
ジェネレーションギャップってやつ? 8インチFDを普通に使ってそう
VC++.netでD3D9.hやd3dx9.hをインクルードするにはどうすればいいのですか?
>>596 すいません、言葉が足りませんでした。
ソースコードにそれを書くのはわかっているのですが、それを実行するためにVC++の設定をどうすればいいのか分かりません。
PCの環境は、DirectX9.0cが入っていて、VC++はインストールしたばかりです。
適切なパスを設定すればいい。
ネタスレにまで堕したか…
>>599 先にVC++をインストールして、その後にDirectX SDKを入れる。
9.0cってのはランタイムだろ、どうせ。
おまい、親切だな。
>>599 そこからわからないなら入門書でも買ってしばらくは手順どおりに進めるほうがはやいじゃん。
それを買う金もおしいならプログラムなんて組むな。以上。
605 :
デフォルトの名無しさん :2005/06/22(水) 15:30:28
とりあえずDirectDrawを使わなければ幸せになれるよ。
607 :
デフォルトの名無しさん :2005/06/22(水) 17:15:38
じゃんけんプログラムのmain関数の部分がわかりません。だれか教えてくださいm(_ _)m
int main() { return Janken().run(); }
>>608 void
main()
{
ここにいれるっぽいのですが
}
自分の巣に帰れよ池沼
#include <stdio.h> int main() { printf("じゃんけんプログラム"); return 0; }
#include <stdio.h> int main() { printf("じゃんけんしよう!\n入力してね グー:0 チョキ:1 パー:2\n"); int i; scanf( "%d", &i); printf("あなたの負けです\n"); return 0; }
メタセコで作ったポリゴン(x)に2つ以上のテクスチャを張ってDirectXで表示したい場合、 テクスチャ別にポリゴンを分けてプログラム内でそれぞれ貼り付けていくのでしょうか?
>>613 最強のじゃんけんプログラムとは、このことだったのですね!オモシロスw
>>616 ループ回してプリミティブ単位で描画するから
毎ループSetTexture呼ぶ
つーかまずXファイルの表示とかやってみた?
619 :
616 :2005/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 ); } とやっていましたが、ここがキーなのでしょうか。 夜に色々試してみます。
ポリゴンの拡大縮小とか Lockして内容書き換えないとメモリ増えていくのでしょうか 今、上書きしてる状態で、作ったプログラムが(MCleanで見て) 徐々にメモリが増加してワラエナイッス
ロックしなくても、行列でスケーリングをセットすれば済むだけだと思うが。
622 :
620 :2005/06/23(木) 15:41:20
>>621 あ、そうでした。拡大は行列を触ればいいすね。
ではちょっと内容を変えて
拡大縮小とか −> 徐々に透明にする場合
ちなみにシェーダー使ってないんですよ。すんません。
固定ならマテリアルを変更すればいいだけ。
624 :
620 :2005/06/23(木) 17:27:26
なぞが解けた。解放忘れであった。 newしまくり。 で、プログラム見たら数週間前の 自分のプログラムをすっかり忘れてる。
固定っていつまで続くんだろ
そもそも確保し直す必要も毎回ロックする必要も無いんだって。
>>625 固定パイプラインに相当する機能は永遠に必要。
ただし、D3DXの担当に変わる可能性は大きいけどな。
WGF2.0あたりで変わりそうな希ガス しかし消失サーフェスのチェックやらd3dcapsのチェックやら という腐れ仕事はいつまでしなきゃいけないんだろう…
WGF2.0でデバイスロストが無くなるから、それまでの辛抱
ハードが行き渡るまで待ってなきゃならない人間にとっては5年は無理。
632 :
デフォルトの名無しさん :2005/06/24(金) 14:04:45
DirectX7でアルファ成分を持っている32ビットのテクスチャを用意して、 徐々に緑(G)とアルファの値が0〜255になるようなものを作って 背景が真っ赤の画面に描画したのですが、徐々に黄色(背景と混ざった色)になってしまいます。 原因が思い当たる方いますか?ちなみに背景を黒にするとちゃんと表示されます。
>>632 D3DRENDERSTATE_SRCBLEND, D3DRENDERSTATE_DESTBLENDの設定が悪い。
>>632 > 原因が思い当たる方いますか?ちなみに背景を黒にするとちゃんと表示されます。
~~~~~~~~~~~~~~~
マズ 赤背景の時に、どのように発色させたいかはっきりしよう。
> 徐々に黄色(背景と混ざった色)になってしまいます。
↑は、有る意味正しく動作しているんだヨ
>>632 赤色の画用紙の上に緑色のセロハンテープ重ねて置いてみ。
何色に見える?
それで解からなかったら幼稚園児からやり直すといいよ。
637 :
632 :2005/06/24(金) 16:17:33
みなさま、ご返答ありがとうございます。すみません。期待している動作は赤の背景にそのテクスチャを描画すると
赤(R255 G 0 アルファ値0)→暗めの黄色(R128 G128 アルファ値128)→緑(R0 G 255 アルファ値255)となるものです。
>>634 さんから教えていただいた「ブレンドファクター121」を読んでみます。
できました。ありがとうございました。
DirectX9cのApril?では3D使うとDLLを1つ配布しないとダメでしたけど Juneの奴も同じなのでしょうか?
> DirectX9cのApril?では3D使うとDLLを1つ配布しないとダメでしたけど はぁ?D3DXのDLLのことか? DLLを単体で配布するほうがダメだ、ってM$が言ってるだろ
それって、配布先ターゲットマシンにDirectX9c入って無いだけじゃないのかと。
PC初心者かよ
9.0b止めしてるぜ
VC6.0でDirectX SDK 9.0c の日本語ヘルプをF1で呼び出せるようにする方法はありますでしょうか? DirectX9Oct04JpnDoc.msi は普通にインストしてもだめぽでした。(.NETにしか対応してないぽ・・。) .NET買えってことですかね・・(´・ω・`)
646 :
639 :2005/06/27(月) 18:48:19
>>640-643 あれ?DirectX9cのどれかのバージョンは
作ったゲーム配布するときDLLも添えないとダメでしたよね?
一般向けのDirectX9cランタイムに含まれていないから
どれかDLLもいっしょに配布しないと動かないと書かれていたはずです
これがJuneでは不要なのか
あいかわらずいっしょに配布しないと動かないのか
おっと失礼 最新の一般向けDirectX9cランタイムには 全部のDLLが入ってることがわかりました 無事解決です
んとねー。
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
卑猥な人たちですね。
テクスチャを自分で読み込むにはどうしたらいいですか? OpenGLだと自分で勝手にフォーマット決めて読み込んでいたのですが… DXだとD3DXでしかLPDIRECT3DTEXTUREを作れないんですか?
CreateTexture Lock
テクスチャフォーマットを無視してtexture::lockで書き込み、意図した結果が得られない悪寒。 とりあえずD3DFMT_A8R8G8B8 にしてLockしたら A<<24|R<<16|G<<8|B で書き込んどけ。
とりあえず↓みたいにすれば、好きなARGBビット割り当てでのカラーコードが得られるぞ。 int argb(int a, int r, int g, int b, int abit, int rbit, int gbit, int bbit ) { return (a>>(8-abit))<<(abit+rbit+gbit) | (r>>(8-rbit))<<(rbit+bbit) | (g>>(8-gbit))<<bbit | (b>>(8-bbit)) ; } D3DFMT_R5G6B5の場合は argb(a,r,g,b,0,5,6,5) にしとく。
655 :
デフォルトの名無しさん :2005/06/29(水) 19:04:05
DirectMusicで一時停止の仕方を教えて下さい。 wavファイルを使って途中再生しようと思ったのですが、必ず最初から再生されます。 セグメントは GetObject() で取得しています。 Segment->SetStartPoint(time); PlaySegmentEx(...,&pss,...); pss->QueryInterface(IID_IDirectMusicSegmentState8, (LPVOID*) &pss8); を呼び出した後、値を調べてみると Segment->GetStartPoint() == time pss8->GetStartPoint() == 0 となっていたので、PlaySegmentEx() 関数を調べてみたものの よく分かりませんでした。 SDKヘルプの「セグメントの一時停止」を参考にしたのですが、 特にこれといった注意書きも見当たりませんでした。
60fspの親ウィドウの上にTEXTの子ウィンドウを作って文字入力し描画したら 激しくちらつくんですがどうやったら親ウィンドウが毎描画するごとに 子ウィンドウを前面に描画することができるんでしょうか?
文字入力そのものを自分で描画すればいい。
Xファイルについてなんですけど フリーのゲームとかみてたらXファイルがフォルダの中にはいっていないのは 他の何かに埋め込んでるからなんですか? どのように隠しているのかヒントください
>>658 拡張子の変更、暗号化、別ファイルに埋め込み、そもそも別のファイル形式
逆行列の作り方は、左からベクトルを掛けるタイプと 右からベクトルを掛けるタイプとどちらのタイプの行列でも 同じ作り方でよいですか?
Visual C++でMFCを使ってのDirectXプログラミングの解説って少ないですね。 MFC使わないでWin32API使った方がやっぱり楽なんですかね…。
初期化の部分がちょっと面倒になるだけだから、解説するほどのことでもない。
そうですか。MFCでdirectinput試してるけどなんか上手く行かないんですよね。 まあ、もう少し色々試してみます。
664 :
デフォルトの名無しさん :2005/06/30(木) 21:50:45
すいません、質問よろしいでしょうか?
3D空間にオブジェクト配置してそれをマウスでクリックして反応とれるようにしたいんですが、
D3DXVec3Unprojectが上手く動いてくれません。
http://www.tsg.ne.jp/sept/prg/memo/polypick.asp ↑見るとワールド行列が初期化されてそのまま入っているのでこれを参考にしたのですが、これで動くものなんでしょうか?
あと、よろしければ皆さんがどのようにZ軸の値を決めているのかも聞かせていただければ幸いです
レイを伸ばすだけ。 それ以上でもそれ以下でもない。
>>664 D3DXVec3Unprojectの第3〜6引数は描画に使ってるのと同じのを渡すだけ。
おまえがワールド行列に単位行列を使ってるなら単位行列を渡せばいい。
667 :
655 :2005/07/01(金) 00:42:51
>>655 で、DirectMusicのwav再生の事で質問した者です。
BBXという掲示板を拝見した所、DirectMusicについての返答は、
ほとんど期待できない様な事が書かれていました。
これは、ここでの返答も期待出来ないと思った方がいいのでしょうか?
というか、期待出来ないと言う事は不可能な処理なのでしょうかね?
一時停止に成功された方がいましたら、返信して頂けないでしょうか?
DirectSoundで自分で好きなように加工して再生すればいいだけ。 ソフトシンセを使う以外でDirectMusicを使う必要性がさっぱり分からない。
一時停止に成功・・・そんなに難しいことなのか?
DirectMusic誰も使ってないもんな。
>>667 >注 サンプル関数の mtLength パラメータは、
>通常、WAV ファイルからロードされたセグメントに対しては 1 である。
>この場合は、SetStartPoint を呼び出す前に、IDirectMusicSegment8::SetLength を使って、
>セグメントの長さを現在のオフセットより少なくとも 1 チックだけ大きい値に設定する必要がある。
>詳細については、IDirectMusicSegment8::SetStartPoint を参照すること。
このへんにやられてるってこともない?
672 :
655 :2005/07/02(土) 02:46:30
皆さん、返信ありがとうございます。
試しに DirectSound で実装してみたら……なんか、簡単に実装出来ちゃいました。
確かに DirectMusic 使うんなら、こっちでよさそうですね。
あ、でも一時停止が出来なかった原因は知りたいな、とも思います。
というわけで、
>>671 さん。
はい、SetLength はちゃんと設定してあります。
GetLenght で設定した値が返ってきましたので、ここは問題ないと思います。
DrawIndexedPrimitiveでLINESTRIPを表示すると、白い線しか表示できません。 具体的にどこで色を指定すればいいんでしょうか? MaterialのDiffuseとAmbientとEmissiveとSpecularは試してみましたが駄目でした。 環境はXP DirectX9.0C GeForce6800です。
ラインでも色の付き方、指定の仕方はは通常ポリゴンと変わらない。 よってラインだから発生する色の疑問点などどこにもない。
単純にD3DRS_LIGHTINGがTRUEになってないだけだったりして
676 :
673 :2005/07/02(土) 16:09:54
>>675 頂点色を付けて、
D3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
の1行を追加したら見事色付きで表示されました!
ありがとうございました。
Materialの設定は特に必要ないみたいでした。
677 :
673 :2005/07/02(土) 16:14:19
と思ったら、 D3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE); も必要なくて、頂点色だけでOKだったようです。 最初に頂点色で試したときに何かミスってたようです・・・。 ありがとうございました。
678 :
673 :2005/07/02(土) 16:20:35
最初にうまくいかなかった原因は、色つき頂点のFVFがD3DFVF_XYZRHW | D3DFVF_TEX1になっていたというくだらない理由でした・・・。 お騒がせしました。
昔自分で書いたDx7のラッパーをヘルプを見ながらDx8用に書き換えてます。 Dx7のDirectSoundにはチュートリアルに大きなwavファイルをストリーミングして再生する方法が 載っていたのですが、DX8のチュートリアルにはありません。 もしかして自動的にやってくれるのでしょうか?
>>679 なんでDx9にしなかったの?
バカジャネwクルシメw
誰も助けてくれないのは承知の上だよね?w
>>680 DirectSoundはDX8もDX9も同じじゃない?
CStreamingSound Sample Class
685 :
デフォルトの名無しさん :2005/07/02(土) 23:09:46
DirectX9対応じゃないビデオカードでも、DirectX9のゲームは動くんだから、 DirectX9使えばいいのに。
>>680 がバカ丸出しな件について
多分自分でコード書いたこと無い阿呆かと
687 :
679 :2005/07/02(土) 23:24:55
>>680 もしかしてそれはギャグで言っているのか?(AA略
>>686 いや、DirectSoundなんてとっくの昔にラッパー組み上げて放置状態だけど?
複数同時のストリーミング再生まで出来てる。
お前もできてからグチグチいってみろ。
できてるならよし。
それとCStreamingSound Sample Classはみたんだよね?
いつからDirectSound9が出来たのか教えてくれwww
692 :
デフォルトの名無しさん :2005/07/02(土) 23:30:22
ここはネタまみれのインターネッツですね
トンチンカンな噛み付き方した
>>680 の負け
695 :
デフォルトの名無しさん :2005/07/02(土) 23:33:55
>>693 自分の間違いを認められず誤魔化したくて必死なんだよ
そっとしておいてやるのも優しさだぞ?
696 :
679 :2005/07/02(土) 23:52:28
質問の意図が勘違いされてるようで 聞きたかったのはストリーミングの仕方ではなくてDx8のヘルプに載ってない 理由だったんだけどな 載ってないならDx8Audioインターフェースなら自動的にやってくれるのか?、と なおストリーミングなら自前のDx7Soundラッパーで実装済み 取り敢えず簡単に7->8と書き換えれば済むって事が判ったのでいいけどね Dx9Soundには笑ったけど
>>696 >聞きたかったのはストリーミングの仕方ではなくてDx8のヘルプに載ってない理由だったんだけどな
ハイハイ。理由まで書いてあるヘルプなんてみたことないけどね。
恐ろしい読解力だ
プログラマーって悲しい生き物ぢゃ
Xファイルを読み込んで表示させてみたのですが、 前後関係がおかしく表示されてしまいます。 SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE) してるんですけどダメです。 心当たりのある方、教えてください。
データの座標系と描画に使っている座標系が何になっているかをまず答えてくれ。 話はそれからだ。
705 :
679 :2005/07/03(日) 09:22:38
>>700 使わない、機能的には俺が書いたラッパーと変わらん
つか自分が書いたラッパーに依存しきったプロジェクトが既にあるんで
今からI/FをMS謹製に合わせたくないのが正直な所
>>702 サンクス、すぐには使えませんがちょっと調べてみます。
自前ラッパーもそろそろ寿命かな…
706 :
703 :2005/07/03(日) 10:04:18
射影行列のZnはいくつにしてる?
>>703 EnableAutoDepthStencilをTRUEにしてる?
>>707 ゼロでした。 1 にしてみたらちゃんと表示できているようです。
まさかこんなところとは……
みなさん(?)ありがとうございました。
710 :
質問 :2005/07/03(日) 15:44:54
DirectX9 HLSLでできることというのは、DirectX8までのアセンブラシェーダで同じものを書くことはできないのですか。 それとも単に高級言語で書けるようになっただけ、なのでしょうか。
>>710 基本的には後者の認識で正しい。
DX9にはコマンドラインのシェーダコンパイラが付属しているから、
HLSLをコンパイルしてアセンブリコードを吐いてみると面白いよ。
今DirectXつかってゲーム製作中なんですけど やたら動作が遅く感じたので、FPS表示させてみたら30〜40位しかでてないんですけど タスクマネージャでCPU使用率見たら0〜3くらいしか使ってません(あとはアイドル CPU使用率ってどういう状況で高くなるんですか??
Direct3D9: (INFO) :MemFini! Direct3D9: (ERROR) :Memory still allocated! Alloc count = 220 Direct3D9: (ERROR) :Current Process (pid) = 00000e10 Direct3D9: (ERROR) :Memory Address: 0037732c lAllocID=1 dwSize=000047f8, ReturnAddr=011534c8 (pid=00000e10) Direct3D9: (ERROR) :Memory Address: 0037da34 lAllocID=11 dwSize=000013d4, ReturnAddr=0114c2cb (pid=00000e10) というのはどういうことなんでしょう?・・メモリーリークなのは解りますがMemFini!ってどういうことですか?
>>712 GPU側の描画処理がボトルネックになってるんじゃない?
716 :
713 :2005/07/03(日) 16:31:46
WGF2あたりからはHLSLだけになるんだっけ?
意味ね----------------------------------------------------------------- また最適化はコンパイラまかせのアホが出る
rayの使い方について少しお聞きしたいのですが、 D3DXIntersectを使って3Dオブジェクトを選択しようとしているのですがどうも上手くいきません。 第一引数に対象のメッシュを、第二引数にメッシュのローカル座標?に変換したマウスの座標を、 第三引数には方向ベクトルということで(0,0,1)を入れました(視点はXY平面に平行です)が、 どこをクリックしても第四引数がTRUEになってしまいます。 恐らくこの文だけでも多くの突っ込みどころがあるかとは思いますが、どうかご教授願えないでしょうか?
とりあえずレイは「視点の座標」と「マウスのスクリーン座標をワールド座標系に変換した座標」を結ぶ直線 ではないだろうか。
平行投影だから視点が無限遠になっちゃうんでしょ
どこから並行投影という言葉が出てきたのか。
↑×並行○平行
DirectXは知らんのだが、 >視点はXY平面に平行です って、まさか画面に平行じゃないだろうなぁ。 #いや、念のためだ。
雰囲気で察っしたまえよ。 とりあえず簡単にど真ん中向いてやろうとしてるだけじゃねーの。 だから、レイの方向を適当に0,0,1と入れてみた。 その補足として「〜は平行です」と書いた。 でも言いたかったのは正しくは「視線がxy平面に垂直」であると。 そもそも点と面で平行とか垂直って言うのかいな。バカの巣窟だな。
XrayNはDQNだよ
>>727 巣窟も何も、>722=725が馬鹿なだけだろ?
DirectX は知らないんだけど Ray は始点を含まない有向半直線だったりしないのかね?
知らないなら黙ってろよウゼェ。
>>721 でFA出てんだよ。
>>730 要は"レイの向き"には、射影後の空間での奥方向(+Z方向)のベクトルを、
モデル空間に逆変換したものを指定すればいいんだけど、
"向き"を透視変換入りの行列で逆変換してもうまくいかないから、
代わりにレイの始点( px, py, 0 )とレイの注視点( px, py, 1 )を逆変換して、
2つの差分を求めればいいわ。
px = (mouseX / screenWidth - 0.5f) * 2.0f;
py = -(mouseY / screenHeight - 0.5f) * 2.0f;
これで透視射影でも正射影でもおkよ。
734 :
720 :2005/07/04(月) 14:50:33
皆さん回答ありがとうございます。レイの方向が変だってことですかね? それ以前に日本語で変なところがあったようですが。。 奥行きがZ軸の正方向なので単純に{0,0,1}でいいのかと思ってました。
>>734 厳密には
>>732 のやり方は、レイの開始点がニア平面の部分に来るから、
視点からニア平面までの見えないポリゴンは判定できないのよ。
視点に合わせようと思ったら、一旦2点をビュー空間に逆変換して、2点の線分の
z=0平面との交点を新しいレイ始点にして、それからモデル空間に
逆変換って感じになるかしら。(ちょっと面倒くさいわね。)
透視射影で決め打ちだったら、ビュー空間の(0,0,0)を逆変換するだけだから
そっちの方が幸せになれるかもね。
最近シェーダーに興味を持って、これから勉強していきたいと思っています。
まだプログラムをせずサンプルプログラムを見ている段階なのですが、
t-potのマルチサンプリングソフトシャドウ等が動きません。
ttp://tpot.jpn.ph/t-pot/program/116_SoftShadoeMulti/index.html ボタン見たいなのがある(#include "dxstdafx.h"がある?)プログラムのみエラーが出ます。。
(t-pot以外の同じようなボタンのあるプログラムも動きませんでした。)
エラー:Could not find required media. Ensure that the DirectX SDK is correctly installed.
環境:DirectX 9.0 SDK (June 2005) : NVIDIA SDK 9.1 : Visual studio
もし原因が分かる方がいましたら、申し訳ありませんが助力をお願い致します。
>>736 DirectXSDKの \Samples\Media\UI フォルダを、*.exeと同じフォルダに
コピーすれば一応動くわよ。
(DXUTは、同じバージョン(この場合2004Summer)のSDKのフォルダしか
探してくれないみたいね。)
本日試したところ、無事動作いたしました。 737さんありがとうございます。
2Dゲーム作るなら8と9どっちがいいんでしょうか
DirectXがいいと思う
743 :
740 :2005/07/06(水) 17:30:00
わざわざ俺なんかにもお礼して頂いて恐縮です
Zソートを実装したいと思ったのですが、どのように面をソートして良いのか分かりません。 1フレームごとに、インデックスバッファのデータをソートしなおすとすごく遅くなりそうです。 オブジェクト単位でソートすると、オブジェクトの中の面はソートされませんよね・・・。 皆さんはどのようにして実装されておられますか?
普通は割り切って、オブジェクト単位で我慢する。
俺は半透明なんか使わないぜ!
そろそろGPU側でうまいことやってくれないかな…?
レスありがとございました。 では割り切ってオブジェクト単位でがんがります。
749 :
720 :2005/07/06(水) 22:40:23
>>732 何度もすみません、( px, py, 1 )をD3DXVec3Unprojectを使って逆変換したのですが
値をみるとめちゃくちゃになっちゃいます、、
( px, py, 0 )だとそれっぽい値がでるのですが。。。
>>749 D3DXVec3Unprojectはビューポートの変換もしてくれるから
px,pyじゃなくてmouseX,mouseY(マウスのクライアント座標)を
そのまま渡せばいいわ、多分。
>>750 何度も何度もありがとうございます。。
早速学校でやってみたいと思います!
752 :
デフォルトの名無しさん :2005/07/07(木) 01:36:28
Xfileで定義されているモデルの 面が右回りなのか左回りなのか わかる方法は何かありませんか? ググってみたら遠くからレイを飛ばして 交差回数を数えるという方法でわかるみたいですが みなさんこれをやっているんですか?
ない。と思います。 分からない場合、別の方法で衝突判定してます。 (衝突判定で困ってるかどうかは分かりませんが)
質問です。 申し訳ないのですが、アゲさせてもらいます。 前にDirectX8のDirectAudioでWAVE-RIFF形式のMP3を再生しようとした時、 ごく一部の環境で再生出来ないと報告を受けた事がありました。 原因は、何らかの要因でWindowsに最初から入っているはずのFraunhoferのMP3 Codecがおかしくなってたからなのですが、 DirectShowを代替手段として使えないかと思い、DirectShowで再生を試みました。 MP3 Codecを削除してDirectShowでMP3を再生した所、特に問題なく鳴ったのですが、 鳴ったは鳴ったで、「なんで鳴ったんだろう?」って不安になってしまいました。 これはDirectShow自身がMP3 Codecを内包してるからなのでしょうか? それとも、ウチの環境が特殊なんでしょうか? 知ってる方がいらっしゃいましたら、ご教授願えればと思います。 DirectAudioとDirectShowで使用しているDirectXのバージョンはDirectX8です。 ちなみに、Codecを削除した状態でWAVE-RIFFのMP3をDirectAudioで再生したらやっぱり鳴らなかったので、 環境としては、以前、トラブル報告を受けたマシンの状態を再現出来ていると思うのですが……。
>>754 この板はageたからといって回答もらえるわけじゃないんだよ
DirectAudio って何? DirectX Audio = DirectSound + DirectMusic なら知ってるけど。
馬鹿限定の隔離方特殊技術。
格ゲーのライフ表示みたいに、常に一番手前に表示されるようにするにはどうしたらいいのでしょう? ちなみに頂点シェーダを使っています。 カメラのビューと射影変換なんかをオフにしたりできるのでしょうか。
ヒント: D3DDECLUSAGE_POSITIONT
>>758 ふふふw
最初、こんなもんもできねぇって俺ってアホ?とか思っただろ?
実は結構難しいんだなw
そもそも画面描画までの座標変換ってよ。
オブジェクト空間→モデリング変換→ワールド空間→ビュー変換
→視点空間→射影変換→クリップ空間→遠近除算→正規化デバイス空間→ビューポート・深度範囲変換→ウィンドウ空間
(書籍 The Cg Tutorial日本語版より抜粋)
こうなってて、頂点シェーダには
オブジェクト空間からクリップ空間までの変換が書いてあるわけだよ。
#ここでどの変換でどの空間に移動してるのかしっかり理解してな。
だから2次元データを頂点シェーダを使って描画するには
クリップ空間上での座標を意識しなくちゃいけないんだよ。
#あ、実際にコードくれとかいうのは無しなw面倒だからw
ヒントと参考書籍まで紹介したんだ。後は自分でなんとかしる!
基本を理解する奴は絶対に伸びる。応援してるぞ。
稚拙な質問ですみません。 プログラム側から、インストールされているDirectXのバージョンを調べることができますか? たとえば、ゲーム起動ログにそのPCにインストールされているDirectXのバージョンを吐き出させるような。
762 :
760 :2005/07/08(金) 01:34:32
>>759 えーw
また、規格外のものを出す〜w
ぶっちゃけありえな〜いw
正直、パイプラインでなにやっちゃってんの?的な匂いがするぅ〜w
ストリーム0しか使えないしぃ〜w
763 :
デフォルトの名無しさん :2005/07/08(金) 02:08:51
質問です。 クルクル回っている三角錐の物体(Xファイル)があって、0〜3のいずれかの数値を与えると、 それに対応した面がパッとこちらを向く・・・というようなことをしたいのですが、 どうすればいいのかサッパリわかりません。 どなたか考え方だけでも教えてください。お願いします。
>>763 そらおめ、まず自分の向いている方向から対象までの角度を測って
対象の方向へ向くように角度を変えていくのが一番だべ。(ちなみに自分ってんは三角錐のことかな?)
方法は
1.姿勢行列から自分の現在の角度取得
2.自分から対象物への角度を取得
3.自分の現在の角度を対象物の方向へ近づけていく
で、できそうだな。
で、わからんのが
・自分の向いている方向をどうやって角度へ直すのか?
ってところだべ。ま、要は角度がわかりゃいいんだな。
アークタンジェントとか調べてみるといいんじゃね?atan2とかいう関数を使う。
肝心なとこ間違えた X・自分の向いている方向をどうやって角度へ直すのか? ○・対象物までの角度をどうやって取得するか?
766 :
763 :2005/07/08(金) 03:20:49
>>764-765 なるほど、三角錐側から考えて
カメラの方へ向いていくというのは思いつきませんでした。
XYZ軸すべて回転させているのでちょっとややこしそうですが、
頑張ってみます。
ありがとうございます!!
767 :
758 :2005/07/08(金) 03:36:41
>>759 これは、座標変換済み頂点の方法ですね。
>>760 氏によると規格外らしいですが、どうにもならなくなったら使わせて頂きます!
>>760 これって結構難しいんですか、なるほど…。
クリップ空間を意識する必要があるわけですか。
つまり、640x480の画像を同じ大きさのウインドウに表示するとすると、
クリップ空間で(-1.0, -1.0, 0.0)〜(1.0, 1.0, 0.0)の大きさのポリゴンにテクスチャを張ればいいんですよね。
えーと、試しに実装してみたのですが、うまくいかないorz 試行錯誤してみます。
別にxyを-1〜1、zを0に、wを1にすれば いいんじゃねーの
>>767 760=762がおかしいだけで、何も問題ないよ。
D3DDECLUSAGE_POSITIONTを使った場合は、ビューポート変換まで
飛ばされるので、指定するのはスクリーン座標。
x,yを(0,0)-(640,480)の範囲で指定して、z=0,w=1あたりに設定して描画するだけ。
必要に応じてD3DRS_ZENABLEやD3DRS_ZWRITEENABLEも使うと吉。
D3DDECLUSAGE_POSITIONTがよく分からなければ、FVFでXYZRHWを
指定しても一緒。
そもそも同じカメラを使い回すという発想しかできない
>>760 がアホ。
ライフ表示用のカメラを作ってやれば、余計な計算などまるで必用がない。
変換済み頂点ってさー、ハードウェア頂点処理の場合はデバイス能力に D3DPMISCCAPS_CLIPTLVERTSか、十分なGuardBandがないとまずいんじゃないの? イヤこれで問題出たってほとんど聞かないけど、dxinfo見る限りじゃ結構対応状況悪いし。 俺はおっかないからスプライトの場合、ワールドとビュー行列に単位行列、 射影行列にはビューポートと同サイズの正射影って感じだべ。 頂点シェーダ使うなら・・・(x,y)をビューポートのサイズで割るだけじゃねーの?
772 :
771 :2005/07/08(金) 12:03:36
>(x,y)をビューポートのサイズで割るだけじゃねーの? ('A`)
>>771 ライフ表示に頂点クリップや広いガードバンドは必要ないしょ。
Intelの狭いガードバンドでも普通は問題にならないべさ。
モデルの拡大縮小をすると明るさが変わってしまいます。 例えば Y軸を拡大 → モデルの上面と底面が暗くなる 縮小すると明るくなります。 (光源は平行) なんででしょうか。
法線の設定が不適切だから。
むう。 D3DXComputeNormals(pMesh, NULL) では不満だというのですか。
>>776 SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );
【質問】 透視射影変換 Frustum についてお尋ねします。 赤本の付録部分等にも4x4行列について載っていますが、 この行列について、原理を理解したいと思っています。 どなたか、透視(正)射影変換について 解説書、教科書、Web情報など、ご存知でしたら教えてください。
CreateWindowExで 最小化ボタンあり最大化ボタン無効 ウィンドウのサイズを変更させない このスタイルのウィンドウを作りたいのですが styleにどう設定すればいいのか分かりません 宜しくお願いします
DirectXと関係ないのに厚顔無恥もいいところ。
784 :
780 :2005/07/08(金) 22:22:58
解決しました WS_DLGFRAMEで行けます
DirectShowを使って、USBカメラの映像を加工してビデオチャットで使う、 ということを行うにはどうすれば良いでしょうか?
データを受け取って流す。
788 :
785 :2005/07/09(土) 15:54:57
ビデオチャットを自分で作るのではなく、メッセンジャーの機能を使いたいと考えています。 その場合、加工したものを出力するのに仮想カメラのようなものを作らないといけないのかなぁと思いました。 加工というのは他の画像のはめ込み等を考えています。 現在はサンプルグラバを使って1枚ずつ加工、それを何かしらの方法で動画に直すという方法で進めていますが方向はあってますか?
DirectXを使おうと思っているのですがどの程度理解してから手をつけていいのやら・・・ そういうクラス群と認識してコピペしながら作り始めていいですかねぇ
>>789 いいですよ。使ってるうちに必要な知識は覚えます。
複数のDirectSoundBufferに取り込んだWaveデータを再生する時、確かフォーマットの何かを プライマリバッファに合わせなければならないという制限があったような気がするのですが どうにも思い出せません。また文献も見つけられませんでした。 nChannels nSamplesPerSec wBitsPerSample のどれかだったと思うのですがご存知の方は教えて下さい。 サンプリングレートでしたっけ('A`)?
>>790 回答ありがとうございます
某所で見つけたサンプルに色々つけたしながら機能を覚える方向でがんばります
やった、メイク通った ありがとう ここまで来るのに5年かか・・・OTL
>>793 >>792 の人かな?
プログラムは絵画と同じで本を読むだけじゃ書けるようになりません。
絵の勉強をする人がひたすらデッサンをするのと同じように、
とにかくコードを書いていくことでどんどんセンスが磨かれていく。
何十冊読もうが、おそらく100行程度のソースすら1発でビルド通らないよ。
796 :
デフォルトの名無しさん :2005/07/10(日) 12:53:52
同じ関数を使う限り、洗練されることはない。 1つの関数に一つの機能しかないものであれば、 結局はみんな同じ書き方になっていく。 1つの関数で2つの事が行える関数を使ったときに初めて 異なる書き方になる。 だから、同じ関数を使う限り何百回何千回書き上げようが何も上達しない。
●分割の評価 プログラムは、モジユール単位に分割しますが、良いモジュール分割とは、「独立性の高い分割」であり、「モジュール強度」と「モジュール結合度」で評価できます。 「モジュール強度」 モジュールがどれだけの機能を実現しているかを示す尺度で、強いほど独立性が高い。 種類 モジュール内の関連性 独立性 機能的強度 1つの機能を実現するためだけのモジュール 高 高 情報的強度 特定のデータ構造を扱うためのモジュール 連絡的強度 関連ある逐次的機能で要素が連絡しあうモジュール 手順的強度 関連のある逐次的な機能を扱うモジュール 時間的強度 時間的に連続した複数の機能を扱うモジュール 論理的強度 関連のある複数の機能を扱うモジュール ←お前が言ってるのこれ 暗号的強度 関連のない複数の機能を扱うモジュール 弱 低
798 :
デフォルトの名無しさん :2005/07/10(日) 13:55:49
C言語のみでDirectXを触っているのですが、 SetTexture( DWORD Stage, IDirect3DBaseTexture8* pTexture ) 関数がうまくいかないみたいです。 warning C4133: '関数' : 'LPDIRECT3DTEXTURE8' と 'IDirect3DBaseTexture8 *' の間で型に互換性がありません。 が出ています。 C++では IDirect3DBaseTexture8* が IDirect3DTexture8* でも表示されるのはなぜですか?継承構造だからですか?
799 :
デフォルトの名無しさん :2005/07/10(日) 14:04:24
DirectX 9.0 SDK Update June 2005をインストールしましたが、
プログラムをコンパイルしようとすると、VC++6.0に
「入力ファイル "d3d9.lib" を開けません」といわれます。
[ツール]-[オプション]の[ディレクトリ]タブの中で
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (JUNE 2005)\INCLUDE
C:\PROGRAM FILES\MICROSOFT DIRECTX 9.0 SDK (JUNE 2005)\LIB\X86
を指定しています。
[プロジェクト]-[設定]の[リンク]タブの中でd3d9.libとd3dx9.libを指定しています。
どうすればちゃんとコンパイルできるんでしょうか?
(
>>522 関連のも読みましたが分かりませんでした)
800 :
デフォルトの名無しさん :2005/07/10(日) 14:15:19
>>799 ディレクトリタブでちゃんと一番上にくるようにもってきた?
また、指定したディレクトリの中身ってちゃんとある?
このぐらいしか俺にはうかばん・・・。
あと、VC6ってすんなりビルドできるっけ?
そのうちプラットフォームSDK入れろとかあれやれこれやれ嫌になるぐらい警告でると思ったけど。
この機会に諦めてVC.NET買ったら?とか思う・・・。スタンダードで十分だし。
801 :
799 :2005/07/10(日) 14:27:21
>>800 一番上に来るようにしてあります。
ディレクトリの中に、libファイルがあることは確認しました。
VC.NETですか・・・、アカデミックで安く買えるかなぁ。
でもできればVC6でできればいいんですが。
VC.NET、VC.NET2003ともう二バージョン古いんだから、コンパイルできなくても 文句言わない。
2003はまだ二年前なわけだが…
読み違えてたわけだが…
805 :
798 :2005/07/10(日) 16:35:11
解決しました。 頂点の設定のフラグが間違っていたみたいです。 それと、IDirect3D8Textureは IDirect3D8BaseTextureの継承になっていました
>>796 >1つの関数で2つの事が行える関数を使ったときに初めて
そんな関数あぶなくて使えねぇよw 適当なこと言うな
>>806 うむ。
1関数1機能を徹底してもらわねば困るな。
まあ、ものによるけど。
809 :
デフォルトの名無しさん :2005/07/11(月) 01:54:40
法線を4x4world行列で変換するとき 3x3行列にキャストして変換すると思うんですが この後正規化するべきだと思いますか? 3x3行列が非直交行列である可能性は低いから省くのが 一般的でしょうか? それとも法線変換用に別に逆転置行列を用意するのが 一般的でしょうか?
810 :
809 :2005/07/11(月) 01:59:21
>>809 2つの質問がごっちゃになってました。
VertexShaderなんですが
法線を4x4world行列で変換するとき
3x3行列にキャストして変換すると思うんですが
この後正規化するべきだと思いますか?
3x3行列がスケーリングを含む可能性は低いから省くのが
一般的でしょうか?
また法線変換用に別に逆転置行列を用意するのは
一般的でしょうか?普通そこまでやらないですか?
法線の場合はw成分を0にして拡張してくれないなぁと時々思うよなぁ 漏れは直交行列以外がわたる可能性があるときは逆転置も渡してるよ。 スキニングでやるとレジスタ足りなくなるorz
>>810 変換行列の左上3×3部分が:
・回転のみ(直交行列)なら、逆転置は用意せず、正規化もしない。
・回転と一様スケーリングのみ(直交行列の定数倍)なら、逆転置は用意せず、正規化のみ行う。
・非一様スケーリングやせん断変形を含む一般の行列なら、逆転置を用意して、さらに正規化も行う。
スケーリングやせん断変形を含む可能性が「高いか低いか」の問題ではなく、
あなたの扱うシーンにおいてその可能性が「あるかないか」で明確に判断すべきですね。
>>799 関係無いとは思う事柄なんだけど、
自分もVC6使ってて、DirectxSDK導入の際に色々面倒臭い事があったよ。
JUNE2005とかSUM2004でもdsound.hでエラーが出るから、
SUM2003を探して導入することをお勧めします。
>>811 スキニングで行列倍はきついですね。
つーか無理ですよね。
頂点テクスチャを使えばいけるかもしれませんね。
>>812 ライブラリ的なものを作ってるので
判断は難しい・・
のでworldは回転+移動のみ強制、逆転置無しでいこうと思います。
(Shader内でスケーリングの必要性今のところ感じないし。)
ありがとうございました。
DIRECTX9の最新の日本語ヘルプをダウンロードして検索してみたのですが 検索結果が全て無題となって 無題をクリックしても何も反応がありません 使い方を教えてください
ビデオボードでDirectX9対応じゃないものは、 DirectX9でデバイス初期化して、 ハードウェアT&Lやシェーダはできない?
対応している範囲内で動作する。
こらタケシ!あんたまたDirectXでエッチなゲーム作ろうとしてるでしょ!ホントあんたって子は
してい
エッチなゲームのプログラム ← タケシ担当 エッチなゲームのモデルファイル ← スネオ担当
エッチなゲームの声 ← シズカ担当 エッチなゲームのテストプレイ ← ノビタ担当 エッチなゲームの販売 ← ドラ○モン担当
どう考えてもミスキャストがあるな
エッチなゲームのプログラム ← タケシ担当 エッチなゲームのモデルファイル ← ノビタ担当 エッチなゲームの声 ← スネオ担当 エッチなゲームのテストプレイ ← シズカ担当 エッチなゲームの販売 ← ドラ○モン担当
【DirectX】
826 :
デフォルトの名無しさん :2005/07/12(火) 21:54:17
DirectShowでMPEGから音声抽出は可能でしょうか?
別にDirectXでやるようなことじゃないと思うが。
828 :
799 :2005/07/12(火) 23:23:14
>>813 返事が遅くなりましたが、JUNE2005を消してSUM2003を入れてみたら、
上手くコンパイルができました。
.NET 2003とか買ったらまた新しいので試してみます。
ありがとうございました。
829 :
デフォルトの名無しさん :2005/07/12(火) 23:28:27
ポリゴンをたくさん作ったら、FPSが30から20ぐらいになってしまったんですが、 そのほとんどは前面のポリゴンに隠れて見えません。 後ろに回って見えないポリゴンは自分で判定して描画しないといけないの ですか? Zバッファとかいうのは関係ないのでしょうか?
描画しないといけない ↓ 描画しないようにしないといけない
>>829 GPUが早期Zテストをサポートしていない限り、そうなるわね。
>>831 わかりました。
ありがとうございました。
>>832 一応補足。
早期Zカリングは手前のオブジェクトから先に描画するようにしないと効果が出ないわ。
最近のGPUではほぼサポートされてるみたい。
アルファなんか無ければ良いのに!
>>833 早期Zカリングがあっても、頂点処理は全頂点に対して行われるわけだから、
頂点シェーダがボトルネックになっている場合はほとんど効果がないね。
>>829 のシェーダ負荷バランスがわからないと何とも言えない。
836 :
デフォルトの名無しさん :2005/07/13(水) 02:13:26
この手の手前のポリゴンで遮蔽されたポリゴンの 頂点変換オーバーヘッドが惜しいなら、一応、 BSPがあるよ。Convexな空間でしかつかえないけど。
837 :
836 :2005/07/13(水) 02:22:19
×Convexな空間 ○閉じた空間とそれをポータルで接続したもの 閉じた空間のことをConvexな空間というのと勘違いして覚えてた。 すまそん。
BSP(二分空間分割)とポータルシステムはまったく別の手法だと思うが
DirectXSDKをダウンロードするのは DirectX 9.0b SDK (2002) と DirectX 9.0 SDK Update (June 2005) をインストールすればいいのですか それとも DirectX 9.0 SDK Update (June 2005) これだけでいいのでしょうか
>>839 いまさら 9.0b 入れる必要はないんじゃないかな。
(ちょっと古い本だと 9.0c に対応してないのもあるけど)
June 2005 でもいいけど、December 2004 あたりにしといたら。
質問の趣旨が理解されていない件について
>>839 Updateだけでいい。
ぶっちゃけ デバイス ってわかりやすく言って何なんですか?
Direct3D のレンダリング コンポーネントのこと で ぶっちゃけ コンポーネント ってわかりやすく言って何なんですか?
他 の こ と も 言 え な い の ? 小 学 生 ?
そういうことは聞いちゃダメ、みんなにだって聞かれたくないことたくさんあるんだよ?
まずは調べてから、ね。お姉さんとの約束だよ。
>>842
構成要素でいい。
Davis
シェーダってdraw〜ごとに一種類しか設定できないんでしょうか? そうだとすると、シェーダーが別のビルボードをZソートなんかしたら すごいことになりそうなんですけど。
851 :
デフォルトの名無しさん :2005/07/15(金) 22:31:09
852 :
デフォルトの名無しさん :2005/07/15(金) 22:35:37
osikkositai
俺には
>>850 が言ってることが分かる気がするけど、答えが分からないので誰か任せた。
未だに固定パイプライン使いですよ?
854 :
デフォルトの名無しさん :2005/07/15(金) 23:04:52
ジオメトリシェーダは知らんがそれ以外ならできるだろ
>>855 バカマイクひさしぶり。なんでこんな所に居るの?
857 :
デフォルトの名無しさん :2005/07/16(土) 03:07:14
WMPもどきを作成中です。 で、再生できる物がきたんですけど再生速度の変更で行き詰まりました。 mpegを再生速度 0.5倍速 に設定すると再生できないんです。 - WMP10での話し - ためしにWMP10で同じmpegを、再生速度 0.5倍速 で再生すると、、 やはり再生できません。 1.0倍速再生→0.5倍速 と、途中から変更した場合は再生できるのですが、 0.5に設定→停止→再生 とすると再生されません。 4、5個のmpegファイルで試してみましたが全て同じでした。 - WMP10での話し 終わり- IMediaSeeking::SetRate を使用しています。 0.51倍速 だと問題は起きませんでした。 エラーは発生しません。 どうしても0.5倍速で再生したいわけではなく、できないならできないと判定できればいいんです。 何か情報持っている方いますか?
はなしし とは?
名詞では送り仮名を付けないと習いました。
ふつー「話」
「話し」は動詞「話す」の連用形だな。
863 :
デフォルトの名無しさん :2005/07/16(土) 15:02:36
DirectX9で雨を降らす効果を説明しているサイトは無いでしょうか? DirectX9 雨 とかで検索してもなかなかそれっぽいサイトが無くて・・・
>>863 実際のゲーム買って雨が降ってるシーンを見て研究するのが一番だよ。
こういうことができないといつまでたっても誰かが整備した道だけ
追い続けることしかできなくなっちゃうからたまには研究してみるのもいいんじゃない?
ま、資料があればそれに越したことはないんだけど。無いときはしょーがないっしょ。
>>863 でもまあ、ちょっとアドバイスすると
調べるときのキーワードを 雨 DirectX9 なんかにするんじゃなくて
モデリングソフトで雨ってどういう風に表現してるのかって知るだけでも
あとはどうとでもなるでしょ。
それがリアルタイムでできるかどうか?また、リアルタイムで表現できるように簡略化できないかどうか?
を考える能力を身に付けようよ。
だからCGWORLDとか雑誌を毎回立ち読みするだけでも実力はついていくと思うよ。
こういう知恵も解説サイトだけじゃ学べないことだぞ。
866 :
863 :2005/07/16(土) 17:02:49
本来はそのほうがいいのでしょうが、 DirectX初心者&時間が無い(納期が近い)なので 出来る限りサンプルがほしいところなのです。
>>866 時間がないならなおさらサンプルなんて読むだけ無駄。
適当に主人公のまわりの空間に雨(ポリゴンで雨っぽい線を描画)して降らせて
地面なんかに可能な範囲で飛沫を付けて終わりでいいじゃん。
もちろん飛沫はビルボード&テクスチャアニメーション。
それっぽく見えるように頑張って終わり。
868 :
863 :2005/07/16(土) 17:25:51
RPGのようなものではないので、3D空間に雨を降らせる必要は無く、 Z=0のところで降らせてみようと思うのですが、 その場合でもポリゴンの描画で実行速度は大丈夫でしょうか?
夏の陣に向けてだとしたら大笑い。いや、大童か。
870 :
863 :2005/07/16(土) 17:43:36
そういえばなぜサンプルは読むだけ無駄なのでしょう?
871 :
デフォルトの名無しさん :2005/07/16(土) 17:50:13
ゲィームでよくある、モワモワなんですが、 あれは一枚ポリゴンで表現するものなのですか。 モワモワだから、全部スプライトなりピクソーなりで描画するものだと思って、 いましたが、大概のゲームでのモワモワをよく見てみると、 モワモワの、周りには、四角い透明な領域があります。 とすると、モワモワというのは、そう見えているだけのごまかしなのでしょうか? 全部ピクセルで描画するのが、ベストと思い尾増すが、なんでそうしないのでしょうか?
>>871 全部計算で出したピクセル使ったらどうなるか想像つかないの?
>>871 テクスチャアニメーションの場合もあるし、
ポリゴンアニメーションの場合もあるし、
その両方の場合もあるしで、
なにも一枚ポリゴン(2枚じゃね?w)とは決まっていない。
板ポリに貼ってそれで終わりってのは中々少なくなってきてはいるな。
まあ、ほとんどデザイナ側の問題なわけだがw
スプライトボリュームでいいじゃん
「モワモワ」で通じるあたりが凄い。
876 :
850 :2005/07/16(土) 19:05:01
>>851 >>854 んと、
いちいち頂点バッファぶった切ってシェーダ切り替えなきゃいけないの?ってこと
100枚描画するとき、
for( int i = 0 ; i < 50 ; i++ )
{
SetPixelShader shader A
DrawPrimitive 1prim
SetPixelShader shader B
DrawPrimitive 1prim
}
こうしなきゃいかんの?
本当はこうしたい
SetPixelShader shader A
SetPixelShader shader B
DrawPrimitive 100 prim <-中で切り替えてくれるといいなぁ
引数、覚えてないから適当
>>876 そんなことしたらプリミティブ毎にシェーダの種類を持たなければならないじゃないか。
for( int i = 0 ; i < 50 ; i++ )
{
SetPixelShader shader A
DrawPrimitive 1prim
SetPixelShader shader B
DrawPrimitive 1prim
}
こんな記述はライブラリで一度書けば、済む問題だしな
最近は動的分岐も可能になったので
>>878 のような主張も可能。
自演キター!
>>871 煙とかをピクセル単位で計算して出してたら
幾らマシンパワーがあっても足りない
>>876 そもそも何のために切り替えているのか、その用途について説明せよ。
この手の質問の場合、根本的にそれ以外の解決方法があるのに、
無駄な手法をとっている場合が十中八九。
882 :
850 :2005/07/16(土) 20:16:32
>>877 shader A Bはまったく別のシェーダだからそうだけど。
draw〜って一杯呼んじゃって問題ないの?directXって?
>>878 条件分岐で分岐する場合、シェーダを組み合わせ用に書かなくちゃいけない
2種類程度ならいいけどシェーダの種類が10、20と増えてきたら容量や使い勝手が悪過ぎない?
>>881 シェーダA/Bをつかった描画がソートの結果たまたま交互に現れたら、
876のようになちゃうよね?
>>869 落下中の雨粒は空気抵抗のために横に扁平な球になっているので、
そういうオブジェクトを作って大量にばらまけばいいと思うよ。(プ
雨粒の大きさによって終端速度が変わるので、そのあたりもちゃんと計算するようにな。
>>881 いろんなシェーダを使って描画するビルボードが画面内に混在すると、
Zソートで奥から描画するときにシェーダ切り替えまくる羽目になるのでどうすんべという話かと。
まあ、テクスチャなんかと同じで、パフォーマンスを気にするなら
まとめるしかないってことになるんでない? 俺は固定パイプライン野郎だから知らんけど。
>>878 無限ループおめ
煙をピクセルで表現したいのなら、何も計算する必要ないではないか。 単に置いていけばいいだけだ。 それに近いのが、ポストプロセス あれだってただ単にアルファマークしたところにピクセルをブチ撒けているだけだ
風吹いたらそのとおりに湾曲させたり分散させたりする必要が別にないわけで 一律に同形状で上がってよし
>>883 俺はビルボードが一箇所に固まってるなら物体が中に入ること自体があまりないので
ソートなんかしないでそのまま出しちゃってる。(水飛沫等)
それが広域に及ぶなら一定単位ごとにまとめて数箇所だすだけの話になる。
逆に画面にちりばめられてるようなシーンなら一度に画面に出る数(カメラに映る数)が大したことないはずなので
一つ一つのビルボードにマトリクスを持たせてそれごとにZソートをかけてる。
1メッシュごとにZソートをかけるシーンってのは極めて特殊だと思う。
ビュークリップもできないので実装したらおそらく激重だろう。
メッシュにある大半のビルボードが画面にでる場面(ビュークリップされない)
ってのが想像できないのであんまり使わないんじゃないかな。
と思うがどうだろうか?
888 :
850 :2005/07/16(土) 21:24:11
>>883 あーそうそう。
やっぱりシェーダごとにまとめて描画するしかないのかな。
でも、モデルデータ中でシェーダ切り替えってどうやってんだろ?
たとえば布と金属で別シェーダだと布用ストリップと金属用ストリップで2パス描画するのかな
マテリアルごとにシェーダ切り替え自由にしてたら死ぬな。
デザイナーに釘さしておかないと。
>>884 モワモワって陽炎じゃない?
それなら描画取り込みのメッシュをそれっぽく揺らせばいいんじゃない。
ついでにぼかしも入れとけば、よりそれらしくなる。
>>887 たとえばジャングルの中とか、そこら中α抜きテクスチャだらけ。
気にしないで書いちゃうのがいいのかね?PS2とかソートしてないゲームが大半だし。
>>888 >たとえばジャングルの中とか、そこら中α抜きテクスチャだらけ。
それだとそういう問題じゃなくてマトリクスごとにメッシュもってる。
つまりZソートかけちゃってる。
一緒のプリミティブにもつってことはしないよ。
モデリングツールでデザイナが設定した通りにでるってそれだけ。
てゆうかさ
>たとえばジャングルの中とか、そこら中α抜きテクスチャだらけ。
こういう物体を一緒のプリミティブに突っ込んだらビュークリップはいつかけるんだ?
言ってる事はDrawPrimitiveに突っ込んだ頂点に複数のシェーダをかけたいってことでいいんだよな?
豆知識:ピクセルシェーダの原理 誰に聞いても「やって見てみればいい」というような、原理や作動もまったく知らないような ド素人がデカい顔してることに対する代名詞的扱い。 せめて「ピクセルを出力するもの」くらいいえないものだろうか
891 :
850 :2005/07/16(土) 22:02:03
>>889 突っ込む前にはじいちゃうんじゃない?
>言ってる事はDrawPrimitiveに突っ込んだ頂点に複数のシェーダをかけたいってことでいいんだよな?
俺、directX触るの初めてなんで
突っ込んだ頂点ごとに別のシェーダがかけたい。
↓
シェーダの切り替えってDrawPrimitiveの外でしかできないみたい(できるの?)
↓
場合によってはDrawPrimitiveとシェーダ切り替えの数がものすごい数になってしまう。
↓
パフォーマンスとか大丈夫なの?とおもった。
DrawPrimitive中で切り替えられるの?
>>891 ああ、なるほど
>シェーダの切り替えってDrawPrimitiveの外でしかできないみたい(できるの?)
DrawPrimitiveの中でのシェーダの切り替えはできなかったような気がした。
気がしたって程度なのはこの辺複雑になってて本当にできないのかは
しっかり調べてないのでよくわからないというのが本当のところ。
>パフォーマンスとか大丈夫なの?とおもった。
おそらくそういう場面が無いので問題になっていないんだと思う。
893 :
850 :2005/07/17(日) 01:50:54
とりあえずDraw単位のソートで組んでみるわ。 回答してくれた人ありがトン。 あと、次のDirectXあたりから固定パイプライン廃止の方向に行きそう。 ソースは言えない。
どちらにせよ上位互換は残るので、今作っている人間にとっては、 廃止されようが残留しようが関係ない。
ヘタレ絵師とそれ以上にヘタレなプログラマが作る同人ソフトに シェーダの有無など関係ありませんよ。アヒャ
>>895 バンプぐらいは使っても楽かも
基本的に模様みたいなのつけて貼るだけだし。
実装もそう難しくない。
もわもわが何か明確じゃないけど 昔(MMX全盛の頃)はそれこそピクセル単位で計算してたじゃないか 何かと併用する余裕は無かったが、不可能でも無かったぜ
費用対効果が最大になるのは 普通のライティング、パンプ、反射、屈折ぐらいまでだろうな。 画面効果も演出的なぼかし、グレースケールなんかはうまく使うと (グレースケールのシーンで赤いマントだけ色がついてるとか) いいと思うけど、被写界深度までいくとセンス悪いと「これ、ちょっとちがうんじゃない?」って のが多い。かけないほうがいいよなー的なのが増える。
>>897 そんなことした覚えないよ。
たくさんのピクセルに変更がかかる場合はアニメーションの方が
早いのはいまも昔もいっしょだよ。
もわもわって、フォグのこと?
>>891 >突っ込む前にはじいちゃうんじゃない?
この発言で気になったんだが、毎フレーム頂点バッファを書きなおしてるの?
>>900 レスを順に読む限りではビルボードをたくさん密集させた形のエフェクトのこと。
>>899 おまいさんがしたことないのは知らんし、
ここでアニメーションが速いと言い出されても、そりゃそうだとしか言えん
アニメーションとエフェクトは、それぞれに利点と欠点があるだろ
>>902 >アニメーションとエフェクト
なにいってんの?
これ比べるもんじゃないし。
>>902 ←これちゃんと書きなおしてよ。
いや先にアニメーションとか言い出したのはおまいだっての 比べるもんじゃないってのは自分に言ってくれ もしくはエフェクトの意味を取り違えているかだな シェーダのそれじゃないぞ
DirectX8辺りから入った人には分からないのかもよ
>>904 俺がいってたのはピクセル単位の処理なんてやってなくて
スプライトのアニメーションでやってたって話だよ。
エフェクトなんていってない。
エフェクトが
>>897 を指すと、類推すら出来ない時点で終わっとる。
最近MegaDemoとか聞かないし、しょうがないのかもね。
>>906 なんかもう疲れたな…
画面全体にピクセル単位の処理(画像エフェクト)をかけることは別に不可能じゃないよ
というか3Dカード必須じゃない頃は、皆が普通にやってたろ
そこへなんで、俺はスプライトのアニメーションだぜー
俺の方が速いぜー…って見当違いの話が出てくるんだ
909 :
デフォルトの名無しさん :2005/07/17(日) 18:32:20
>>908 画面全体の処理の話なんてしてないじゃん。
あくまで小さいエフェクトの話だっただろ。
ビルボードでたくさん出すって話からどうして画面全体の話になるんだ。
自分の発言をころころ軌道修正してるみたいだけど
こういう奴だいっきらい。馬鹿みたい。
910 :
デフォルトの名無しさん :2005/07/17(日) 18:32:59
>>908 もう馬鹿なんだから3Dゲームなんて作るのやめろよ。
とうとう感情むき出しか
912 :
デフォルトの名無しさん :2005/07/17(日) 19:04:44
彼は頑張って突っ込み所を見つけたんだよ。見当違いだったけど。
いやたぶん話が通じてないだけだ 恐らく描画バッファを直接叩くという概念すら分からないニュータイプ
反論できないと人格叩きに転向でつか(^^)
916 :
デフォルトの名無しさん :2005/07/17(日) 19:53:45
今北産業
なんかワナビーが暴れてるみたいね。句点がついてないのは全部同一人物か? ポストプロセスの2D処理でモワモワをまともに表現できるわけがないだろ、バカめ。
全部同一人物にされてしまったw
正直好きなようにやれよと。 過程が重要なんじゃない、必用なのは結果だ。
いや、皆899の「そんなことした覚えないよ」に、「それはお前だけ」と突っ込みたいだけだろ。 句点付けておくか。
いつから平気でだろだろ言うようになったのですか? たががはずれたのはいつどんな瞬間だったのですか? 皆もやってるから自分もいいだろうと思ったのですか? そんな当たり前の節度も守れない人間が他人にお説教ですか? 恥かしいですね。
もはや中傷合戦になっとるな
だろ?(^ω^)
897 902 904 908が同一人物ね
>>899 は、もうどうでも良いですわ…
>>914 同意
>>917 >>871 はスプライトと言っている以上2Dゲームっぽいし、十分以上に可能だと思うんだがどうだい
というか
>>871 自身、画像エフェクトで(全部ピクセルで)やりたがっているみたいなので、
>>880 に対し、
>>897 で助け船を出しただけよ
そもそも俺は、ゲームでよくある、ってとこから画面切り替え効果みたいのを想像してた
917氏はモワモワが何か分かっている様だが…
〃∩ ∧_∧ ⊂⌒( ・ω・) はいはい、わろすわろす `ヽ_っ⌒/⌒c ⌒ ⌒
もやもや病
ところで、モワモワとは何だったのか、871はちゃんと説明してくれよw
ピクセル処理 ポストプロセスとして使うもの 顕著にわかる代表例:Hitman Contracts エフェクトとして使うもの ・煙を表す、ボリュームレンダリング
見解がズレたままケンカしてるんやでw
そういうZソート前提の話題より Zソートをいかにして無くすかの方が まだやる価値があるような気がするが。 重なる数に2枚までとか4枚までとか制限をつけたら 何とかなりそうとかさ。 マルチインスタンスに動的分岐にそれを組み合わせれば 1パスで全てのスプライトが表示出来てウマーとかさ。 考えてみてくれよ、俺の為に。
>>932 >マルチインスタンスに動的分岐にそれを組み合わせれば
>1パスで全てのスプライトが表示出来てウマーとかさ。
よくわかんねぇよ。
この場合ってビュークリップっていついれればいいの?
毎フレーム頂点バッファを構築しなおしてるってこと?
934 :
デフォルトの名無しさん :2005/07/19(火) 01:23:45
Xファイルを表示するサンプルソースを見たのですが、 複数のXファイルを表示する方法がわかりません。 プレイヤと敵を同時に表示する時とか、どのようにすれば よろしいのでしょうか?
ナンカ急にレベルが下がったが、D3DXLoadMeshFromX()を自分の好きなだけ呼べばよかろう。
>>934 それは複数表示できてるソースをあげてくれと言ってるのか?
サンプルのここが理解できないからわからん
とかならまだしも
>>934 Xファイル……と言うかメッシュの表示ね。
複数じゃなくてひとつの Xファイルを読み込んで
それを複数描画するにはどうすればいいかわかりますか?
「ひとつのXファイルを読み込んでそれを複数回描画する」 としか・・・
printf関数で"hello world!"を複数表示するにはどうs (略 みたいな質問されてもなぁ
初歩的な質問だと思うけど聞かせてください。 VC6++でDirectX9AppWizard使ってスケルトン作って勉強し始めたんですが、 class CMyD3DApplication : public CD3DApplication になってるからCMyD3DApplicationをいじくればいいんだと思って、 色々いじって反応を見てたんですが。 ウィンドウサイズ変更するときが不思議だったんでおしえてください。 m_dwCreationWidthの値を変更すればいいと思って。 CMy〜の方のコンストラクタの値を弄ってもなぜか500x375からどうしてもかわらず、 「へんだなぁ」と思いつつ m_dwCreationWidthがDWORDってなってるから整数だっけなと思いつつ、 SetRect( &rc, 0, 0, m_dwCreationWidth, m_dwCreationHeight );→ SetRect( &rc, 0, 0, 640, 480 ); に変えたら変更できたんで。 やっぱm_dwCreationWidthだなぁと思って。 CD3D〜のm_dwCreationWidthを変更してみたら ウィンドウサイズが変更できました。 コンストラクタはCD3D〜→CMyD〜の順に通るんですよね? 変更できない時は以下の状態だったんですが、 CD3D〜のコンストラクタでは m_dwCreationWidth = 400; m_dwCreationHeight = 300; CMyD〜のコンストラクタ m_dwCreationWidth = 640; m_dwCreationHeight = 480; スケルトン作った直後の表示では (500x375)となってました。 自分の頭の中で解決できないんで助けてください
他人の規則に従うのが無理なら、ウインドウの表示ぐらい自前で書けば解決。
942 :
940 :2005/07/19(火) 12:48:49
今やってみたら
CD3DとCMy3Dのm_dwCreationWidth両方いじっても変更できませんでした。。。
どうなってるんでしょう・・・。
>>941 まだウィンドウの表示とか自前で作れないから、
スケルトンプログラム読んで勉強しようと思ってるんですが…。
>>942 ならウィンドウの表示から学べば良い。
スケルトンは飽くまでそういった基礎が解かっている人が作成の手間を省くために
使うものであって、決して勉強用ではない。
どっちにしても結局は覚えなきゃならないよ。
944 :
940 :2005/07/19(火) 13:05:31
>>943 本来はそうなんでしょうね・・・。
良い参考書が見当たらないんで(あんまり探してないけど…。)、
スケルトンからやってみようと思ってます。
自己解決できました。
スケルトンがレジストリにウィンドウ枠の大きさを保存していて、
コンストラクタの最後でそれを読み込んでいる為でした…。
ウィンドウの表示のためだけに本買うの? お金持ちだねぇ
>945はそんなに貧しいの?
>>945 じゃあなんとなくAdvancedWindowsを買った俺はなんなんだ!
しかもウィンドウの表示なら買うのはプログラミングWindowsなのにッ!
>>940 適当にブレークポイントしかけて、
ウォッチウィンドウで値確認してけばいいんじゃね?
ちょっと考えれば簡単に手にはいるぞ。
入手できました ありがとうございました
954 :
デフォルトの名無しさん :2005/07/20(水) 16:21:26
3Dとか触ってみようと思ったんですが、 どっかのページのサンプルをコンパイルしたら D3DXMatrixTransformation2D がネーヨって言われて、d3dx9math.hを見たら、たしかにありませんでした。 ヘルプにはあるっぽく書いてあるのに... ひょっとしてOSのせい(Windows 2000 sp4)?
(´-`).。oO(なんでこんな池沼がD3Dなぞ触ってるのだろう)
956 :
デフォルトの名無しさん :2005/07/20(水) 16:50:46
>955 それくらい教えてやれよ 俺のDirectX知識は7.0で止まってんだよ。 質問の内容で、こいつ古いバージョンのDirectX使ってるくらい分かるだろアホ
Win2K+VC6+DX8で開発してます。 ウィンドウの最小化ボタンをつけていた(ウィンドウスタイルにWS_MINIMIZEBOXを指定)場合、 最小化ボタンやWindowsキー+Dで最小化するとエラーが起きて終了しちゃうんです、 (恐らくReleaseし忘れとかだと思います) んで、エラー箇所がよくわからないのでとりあえず置いといて、 今度は最小化ボタンを表示しないでウィンドウを作ったですが(閉じるボタンのみ)、 この場合にWindowsキー+Dで最小化してもエラーが起きなかったんです。 Windowsキー+Dの最小化、というのは普通(?)の最小化と違うのでしょうか? また、エラーが発生しなかったので、最小化ボタンを表示しないのであれば このまま何かエラー対策処理などを加えなくても大丈夫なんでしょうか?
962 :
デフォルトの名無しさん :2005/07/21(木) 00:57:41
スレ違いではないでもない気もするのですが、質問です 多角形のポリゴンを3角形に分割する方法に悩んでいます。 ある配列Aがあり、その中には多角形を構成するn個の頂点のデータが時計回りで連続して入っています。 この配列のデータを3角形を構成するデータに変換するにはどうしたらいいでしょうか。
>>962 triangulationとかでぐぐるといいそうだ
>>962 …間違ってたらスマンが
配列に時計回りで連続で入ってるなら
0番目の頂点と、後は配列で連続する2頂点をずらして
三角形を形成して行くだけなんでは?
012
023
034
045
…こんな感じ…
>>963 ありがとうございます。ドロネー法という難しそうなのがヒットしました。これを考えて見ます。
>>964 FANで構成すると、ひねったような位置に2頂点がくるとまずいことになります。。。
>>964 凹型ポリゴンで氏ぬ
>>965 Blue Impulse SDKっていうオープンソースなライブラリのなかに
凸型ポリゴンに分割する関数がある。
そこまでやれば964の方法も使える。
少々癖のあるソースだがこいつを研究してみるのもありだ。
968 :
965 :2005/07/21(木) 22:36:08
再現性が低いバグが出た場合 おまいさんがた、どう対処してますか? d3dxmath.hこんなファイル名だったか inline D3DXVECTOR3 operator - 忘れた { ⇒ return D3DXVECTOR3( x - v.x, y - v.y, z - v.z ); } こんな汎用的に使う場所で・・・
何がおかしいの?
あ しまった。 初回の例外は〜〜〜〜〜とでて止まった。
>>969 の存在そのものがバグ。
修正するのなら死ぬしかない。
>>972 そいつは困った。
ブレークポイントも効果ない上に
なかなか症状がでないなぁ。
C MAGAZINEのプログラムの禁じ手にある ・自動変数をポイントして,それを関数の戻り値にする ・解放したものを使う ここらへんを やらかしたんだろうか?w
>>969 は自動変数のコピーを返してるだけじゃないの?
vが怪しいかも
d3dx9math.inl(385) D3DXINLINE D3DXVECTOR3 D3DXVECTOR3::operator - ( CONST D3DXVECTOR3& v ) const { return D3DXVECTOR3(x - v.x, y - v.y, z - v.z); } これか。 …構文的には間違ってないように思えるけど。
978 :
969 :2005/07/22(金) 00:59:31
971,973,974は自分です 名前欄いれるの忘れてた。 D3DXVECTOR3をnewしてもいないのに ポインタとかありえんしなぁ void hoge( D3DXVECTOR3* pV ) こんな関数は沢山作っちゃったけど pVの参照元が何もありません とかも考えきれんしなぁ
少なくとも、D3DXVECTOR3::operator - には何の問題もない。
あるあるww 俺の場合は呼び出し元が壊れたオブジェクトだったり、無効なポインタdeleteした後だったってことが多いw 関数は問題ないんだよなww
981 :
969 :2005/07/22(金) 01:04:27
>>977 おお まさにソレです
とりあえずあやしぃ場所に
assert( pV )
仕掛けまくってみますた
そもそもデバッガ機能を
使いこなせてない俺ガイル
それでは、おやすみ
982 :
969 :2005/07/22(金) 01:07:50
壊れたオブジェクトか STLのvectorでの消し方がまずかったかな 参考にしてみます。ありがとう!!
遅レスだが、エフェクトというMS用語にはマジでむかついた。 nVidiaのCg以上にむかついた。 混乱するだけだろっての。
>>969 そろそろデバッガの使い方を覚えた方がいいと思うぞ。
例えば「初回の例外」って何のことだか分かってるか?
>>983 DX7あたりのエフェクトはクソだったが
今はだいぶ使えるようになったぞ。
頑張って慣れろ、絶対エフェクトマンセーになるから。
987 :
985 :2005/07/22(金) 09:26:45
ああ
>>983 は、エフェクトの名前そのものに文句いってるのね。
それは同意、つーかコンピュータの技術って一般的な名前つけるの
多すぎ。アトラスとかベロシティとか、検索めんどくせーんだよ。
日本語なら、まだカタカナ語として専門用語っぽく区別できるけど、 英語の中に紛れると非常に不便だよね。
だからといって、英語の医学用語みたいにラテン語バリバリとかも嫌だけどw
まともな名前を考えるとしてRenderingSolution?
せめて2単語なら検索しやすくなるのに、1単語だもんな。 検索しにくいったらありゃしない。非常にむかつく。
史上最強のクソ名前ってやっぱCgか?
993 :
969 :2005/07/22(金) 12:38:02
>>984 漠然とでしか解ってなす。
大概、リリースとかデリートしたものにアクセスすると
そういうのに引っかかるかな。
BBX荒らしてるjj = スレ主
むしろ荒らしは休暇中。 何であんなに得意気なんだ?
おまいら次スレって概念は無いのか
またリンク無しか、テンプレ議論も無しか
ここの
>>1 自体は良いテンプレだけどな(誰も守らんが)
他、初質系の割に、いつまでたっても参考リンクが出来ないとことかどうよ
999 :
デフォルトの名無しさん :2005/07/22(金) 20:52:32
ume
1000 :
デフォルトの名無しさん :2005/07/22(金) 20:53:04
hara
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。