【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/
0266デフォルトの名無しさん
2005/06/01(水) 18:15:07法線ベクトル(XYZ)
頂点カラー(ARGB)
ライト
D3DLIGHT9構造体のデータ
マテリアル色
D3DMATERIAL9構造体のデータ
以上のデータを使ってライティングするコードを教えてください。もしくは公式を。
以前はDirectXのAPIを使ってやっていたのですが、諸事情により、自力で光源計算しないといけなくなりました。
もしスレ違いなら書き込むべきスレを教えてください。
よろしくお願いします。
言い忘れました、ライティングの種類は平行光源です。
0267デフォルトの名無しさん
2005/06/01(水) 18:17:010268デフォルトの名無しさん
2005/06/01(水) 18:24:37その値と、頂点カラーと、拡散反射係数を乗算するとディフューズ色はでるけれど。
0269デフォルトの名無しさん
2005/06/01(水) 18:44:36頂点だけでなく、法線も適用されますか?
0270デフォルトの名無しさん
2005/06/01(水) 19:24:13vc++6.0の場合は DX9.0 SDK Update (October 2004)まで対応してるんですよね?
0271デフォルトの名無しさん
2005/06/01(水) 20:51:09SDKのヘルプに全部書いてあるじゃん。
Mathematics of Lightingってところ。
0272デフォルトの名無しさん
2005/06/02(木) 00:48:28頂点へのランバートの余弦則と、フォンのスペキュラでモーマンタイ。
あとは面内補間だから。
0273デフォルトの名無しさん
2005/06/02(木) 01:00:13されるよ。されるけど、normalizenormal だかなんかのレンダリングステイトを
イネーブルにしないと、ワールドマトリックスのスケーリング成分に合わせて拡大されてしまう。
っていうか、シェイダー使った方が楽。
0274デフォルトの名無しさん
2005/06/02(木) 01:02:30これ、知らないで拡大して真っ黒になっちゃって、あわてる馬鹿な同僚がいたw
そんときいそがしかったから、正直、氏ねって思った。
0275デフォルトの名無しさん
2005/06/02(木) 01:09:580276デフォルトの名無しさん
2005/06/02(木) 01:10:44胃薬の名前
0277デフォルトの名無しさん
2005/06/02(木) 01:11:03同僚が悪いんじゃない。MSが悪い。
0278デフォルトの名無しさん
2005/06/02(木) 01:23:400279デフォルトの名無しさん
2005/06/02(木) 01:31:59そんなわけない。
余計な計算であることは事実なんだから。
OFFがデフォで正しい。
0280デフォルトの名無しさん
2005/06/02(木) 01:32:50俺もへぼプログラマですが、日頃から同僚に氏ねって思われてるんでしょうか?orz
0281デフォルトの名無しさん
2005/06/02(木) 01:42:05当たり前じゃん。
プログラマなんて自分より実力が無いのはみんなクズなんだから。
0282デフォルトの名無しさん
2005/06/02(木) 01:50:19すべてのモデルをスケーリングを前処理でやれば問題ないが、
固定パイプラインの即席でできる的なコンセプトから言えば、
適当なモデルをスケーリングして回転して移動して即席表示できるべきだ。
なので法線のノーマライズは「余計な計算」でなく、「やらなきゃいけない計算」
なわけだから、ONがデフォが正しい。
最適化したい人がOFFにすりゃいい。
そういう人は、何が問題だかわかっているわけだからそれこそ問題ない。
初学者に「機能をすべて把握してから使え。」なんて強要しているAPIはアふぉでしょ。
こういうのはAPIデザインをする側の問題。同僚は悪くない。
0283デフォルトの名無しさん
2005/06/02(木) 01:55:49thx
0284デフォルトの名無しさん
2005/06/02(木) 02:01:41いや、そのまえに法線知らないで3Dいじるなよ。
って時代にできたものだからな>固定パイプライン
さすがにそんなレベルの低い奴はいなかったけどな。
今は違うんだね。
0285デフォルトの名無しさん
2005/06/02(木) 02:44:18昔のD3D初心者は「固定パイプライン内部の変換で法線ベクトルがノーマライズされない」ことに事前に気づくやつばっかだったか?
んなわけない。
初心者が、レンダリングステートを一通り目を通さなきゃ正常に動作しないってのはおかしいだろ。
OpenGLを見よ。「いじらなくともデフォで《正常》に動く」のがあたりまえのソフトウェアデザイン。
「いじらないとデフォで《異常》な動作をする」のは底辺プログラマの所業。
0286デフォルトの名無しさん
2005/06/02(木) 03:44:130287デフォルトの名無しさん
2005/06/02(木) 04:23:18Directx本体は英語版ですよね??
みんなそれ使ってるよね?
0288285
2005/06/02(木) 04:28:52あなたの主張からは、初心者を馬鹿にして「自分の方が上」って思いたいという思いしか伝わってこない。
でないなら、何が言いたいわけ?論旨はなによ?
0289287
2005/06/02(木) 04:34:230290デフォルトの名無しさん
2005/06/02(木) 05:16:09「昔のD3D初心者」には関係なかったけどなw
0291270
2005/06/02(木) 07:12:430292デフォルトの名無しさん
2005/06/02(木) 07:34:360293デフォルトの名無しさん
2005/06/02(木) 22:40:03はぁ?馬鹿?
異常な動きじゃないじゃん。
実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
表示はバグってないだろ。
正しい対処方は法線を表示できるようにすることであって
なんでもかんでも法線を正規化して表示することじゃないでしょ?
こういう問題をどうして正しくとらえることができないかな?
対処法間違ってるのわからないの?
レベル低すぎ。って初心者スレかw
0294デフォルトの名無しさん
2005/06/03(金) 00:19:06できなくはない、というレベル。
レンダリングターゲットを用意して、そこに書き込む。
0295デフォルトの名無しさん
2005/06/03(金) 00:47:01WGFからは確か出来るようになるんじゃなかったかな。
今はテクスチャにデータを載せてピクセルシェーダーで処理して
テクスチャに書き出してそれを使う。GPGPUで検索しろ。
0296デフォルトの名無しさん
2005/06/03(金) 01:04:35> 実際に法線・もしくはスケーリングが腐ってるデータの方が異常なんであって
> 正しい対処方は法線を表示できるようにする
超〜ハズカシイやつ。
勉強不足な頓珍漢なバカはおまえだよ。何が問題かすら全くわかってない。
レベルが低すぎるのはおまえだろうがw
0297デフォルトの名無しさん
2005/06/03(金) 01:09:05はぁ?じゃ、何が問題なのか説明しろよ。
0298デフォルトの名無しさん
2005/06/03(金) 01:21:24何が問題って、俺が何の話しているかすら判ってない上に、
如何にも付け焼刃の知識(しかも間違っている)で頓珍漢な対処法とやらを開陳して、
人を馬鹿な初心者呼ばわりしているおまえのバカさ加減。
0299デフォルトの名無しさん
2005/06/03(金) 01:25:36法線にスケーリングが掛かったら、それが
どう言う意味か知らない奴がD3Dを使用するなって感じ。
初心者とかじゃなくて、数学や技術の問題。
そもそも、スケーリング成分が無い行列をセットされるのが有り得る、もしくは大半なのに
いちいち正規化するのが無条件なんてDirectXじゃなくて、非リアルタイムよりのOpenGLを使えって感じ。
(まあ、そう言っちゃてるがw)
言い換えると、int型なりshort型なりの変数に値を代入したら
いちいちその型のオバーフローをチェックするのが当たり前とか抜かしてるレベルと一緒だろw
代入 -> if 型オバーフローチェック -> 変数に代入の度にデフォ
見たいな感じw
0300デフォルトの名無しさん
2005/06/03(金) 01:48:13だからさぁ、固定パイプラインの話だぜ?
どこのクソ業者が今時シェーダー使わずに固定なんか使っちゃっているわけよ???
キミのところは「OpenGLなんか非リアルタイムだぜ。うちはDirectX固定パイプラインでバリバリリアルタイム」
なんていっちゃっている痛い会社なわけ?
シェーダーが主流である現在、固定ってのは初学者がD3Dに入門するためのモードって言い切っちゃっていいでしょ。
トランスフォーメーションパイプラインで法線を正規化するのかしないのかってのはAPIの実装依存ってのは判るよな?
固定だとトランスフォームしたノーマルをクライアントに返さず、そのままライティングに使うわけだ。
だからこそ、normalizenormalというユーザー設定可能なレンダリングステートが用意されている。
それはよしとして、固定の使用用途から言って、このデフォルト値がOFFである必要は全く無い。
最適化の必要ない所があえてフールプルーフになっていないのはあふぉ。
なぜなら、そもそもプロは固定なんか使わないから。
0301デフォルトの名無しさん
2005/06/03(金) 01:49:38意味不明。
0302デフォルトの名無しさん
2005/06/03(金) 01:58:47古いカード使ってるユーザーは無視
なわけねえよね
0303デフォルトの名無しさん
2005/06/03(金) 01:59:04わかる人は判るからいいです。
> 法線にスケーリングが掛かったら、それがどう言う意味か知らない
だいたいさ、SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した
純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。
どういう実装になっているかは、運よくnormalizenormalのステートを見てそれが何であるかを意識した人だけだろう。
0304デフォルトの名無しさん
2005/06/03(金) 02:00:20日本じゃどうしてんのか知らないけど、うちでは無視です。
0305デフォルトの名無しさん
2005/06/03(金) 02:00:51大丈夫w
そんなもん運に頼って見つけるの君だけだからw
0306デフォルトの名無しさん
2005/06/03(金) 02:02:23日本でもラブデスはぶっちぎりで無視でした。
0307デフォルトの名無しさん
2005/06/03(金) 02:03:49悲惨なやっちゃな
0308デフォルトの名無しさん
2005/06/03(金) 02:05:200309デフォルトの名無しさん
2005/06/03(金) 02:06:19初めから単位化された法線を
スケーリングなしの行列でトランスフォームした場合でも
全てデフォで単位化するなんて方がアフォ。
プログラマとしての発想の違いとも言える。
数万頂点の法線がはじめから単位化されていて
セットされる行列もスケーリングなし
しかし、その数万回の単位化をなんとも思わない時点で...
プロなら、シェーダー非対応のボードでも
切り替え指定で動くように作るだろw
弊社のゲームはDirectX9、対応ボード必須(256M以上とか...)、
CPU3GHz以上必須(ここは妄想だが)とか言うのがプロなの?
half life2以上は期待しちゃうよ?
0310デフォルトの名無しさん
2005/06/03(金) 02:07:15らぶデスも別に古いので動くけどな
0311デフォルトの名無しさん
2005/06/03(金) 02:09:31法線スケーリングされてポリゴン真っ黒なのに、顔真っ赤にしちゃうわけだよ。ぷw
0312デフォルトの名無しさん
2005/06/03(金) 02:11:180313デフォルトの名無しさん
2005/06/03(金) 02:12:37プロだったら、前処理でスケーリングして、normalizenormal を一回だけOFFにセットすりゃいいんだよ。
初心者は、normalizenormal を知らない可能性が高いっつてんだよ。
0314デフォルトの名無しさん
2005/06/03(金) 02:13:44固定の処理をハード処理して速度を稼ぐって言う
昔の非力なグラボ時代の話であって
それを
シェーダーが主流だから初心者用だとか
APIの実装依存とか
SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した
純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。
とか言っちゃうんじゃないのw
固定処理以外の部分はプログラマが指定しろって事なのに
お前は、固定処理に法線のノーマライズが必要って言ってるんだぞ?グラボ会社に要求しろ
それ以外ならソフト処理の問題であって固定機能とか言ってるな、ボケ
0315デフォルトの名無しさん
2005/06/03(金) 02:14:100316デフォルトの名無しさん
2005/06/03(金) 02:20:04日本のWindows向けクソ3Dゲーの事は良く知らない。
日本にはろくなD3Dプログラマがいないということだけは知っている。
> SetTransform()内部で、world matrix をextract して、スケーリング成分等を除去した
純粋な回転行列に変換し、それを法線ベクトルの変換に使う実装だってあり得るわけだ。
とか言っちゃうんじゃないのw
「とか言っちゃう」って何がおかしいんだよ?説明しろ。
0317デフォルトの名無しさん
2005/06/03(金) 02:23:16> お前は、固定処理に法線のノーマライズが必要って言ってるんだぞ?
>>285 から書いている通り「初心者のためにnormalizenormalはデフォでONにすべき」
っていってんだよ。何回説明したら論旨を理解するんだ?バカ。
0318デフォルトの名無しさん
2005/06/03(金) 02:26:200319デフォルトの名無しさん
2005/06/03(金) 02:27:17実際はAだ!Aだ繰り返してるだけの屑議論だな。
つまんね
0320デフォルトの名無しさん
2005/06/03(金) 02:28:47インパルス板倉「学校で浮いている奴が、2chで虚勢を張っている」
http://news19.2ch.net/test/read.cgi/news/1117727344/
0321デフォルトの名無しさん
2005/06/03(金) 02:28:550322デフォルトの名無しさん
2005/06/03(金) 02:29:55それをハード固定機能に求めるのか
SetTransform()内部のソフト的な部分に求めるのか混同してる
ソフト的な問題なら、今までの”パイプライン”とかの意味不明な発言の落とし前はどうするの?
>>317
お前は、”固定機能が初心者用だから”って前提を突っ込んでるのは完全無視なのか?
0323317
2005/06/03(金) 02:31:02こんなの意味なんかあるかよ。わけわかんねーよ食ってかかってきてるやつ。
おれの論旨は「D3D初心者のためにnormalizenormalはデフォでONにすべき」
であって、それ以上なにもない。
0324317
2005/06/03(金) 02:34:01> それをハード固定機能に求めるのか
あのー、
HALと、Fixed pipelineを絡めて議論する意味ってなに????
訳わかんないんですが。
0325デフォルトの名無しさん
2005/06/03(金) 02:36:45アフォか
それなら、D3D初心者のために行列は使用しない
座標値と角度のみとか
角度も初心者のためにラジアンは使用しないとか
正しい要求なのか?w
0326317
2005/06/03(金) 02:38:55くだらないので逝きますね。
0327デフォルトの名無しさん
2005/06/03(金) 02:40:55言った言わない議論でスレ伸ばしても無意味。
それとも、スレ延ばすとあんたの収入が増えるビジネスモデルなんかい?
0328デフォルトの名無しさん
2005/06/03(金) 02:41:480329デフォルトの名無しさん
2005/06/03(金) 02:43:36固定パイプラインの中で処理されるH/W T&Lのハード機能とは別ものである
中途半端なのはどっちだw
0330デフォルトの名無しさん
2005/06/03(金) 02:46:38一つも反論してないよ?
無理前提を、突っ込み無視で押し通すつもり?w
0331317
2005/06/03(金) 02:49:09あのなぁ、論旨となっている使用するAPIのとっつき易さ(優れたデザイン)と、
ユーザーに求められる数学の素養くらい分けて考えろ。
「理学者は全員D3Dのエクスパート」とキミの論理は恥ずかしくバグっている。
バカ丸出し。
まぁ、お前のような奴が、三角形を一つでも表示させることができている
とすれば、D3Dは十分 "fool proof"ということだ。
0332デフォルトの名無しさん
2005/06/03(金) 02:52:31毎日が休みの人はいいな、
API設計の良し悪しなんていう
どうでもいい議論で盛り上がれて
0333317
2005/06/03(金) 02:53:38> それをハード固定機能に求めるのか
>SetTransform()内部のソフト的な部分に求めるのか
これで何が言いたいんだって聞いてんだよ。
>固定機能が初心者用
だからさ、固定なんか使ってんのは今時日本のクソ3Dゲーか美少女ゲーの特殊効果だけだっつってんの。
ほとんどの初心者が最初に三角形を出すのに固定パイプラインを使うことはほぼ間違いない
。
0334デフォルトの名無しさん
2005/06/03(金) 02:55:30初心者用、APIデザインとか言ってるのは
その数学的な素養が要らないって意味だろう?
じゃ、C言語を扱うプログラマ初心者の為に
C言語基本的素養は、初心者用、関数デザインとか言って
求めないのと一緒だろw
0335317
2005/06/03(金) 02:56:12悪いがこっちはまだ19時で休憩中なもんで。
0336デフォルトの名無しさん
2005/06/03(金) 02:57:30お前さ、次から次に自分の理屈を言ってるだけで
突っ込み無視で、技術有ります見たいな発言繰り返すのみ、言い訳のみ、だなw
0337デフォルトの名無しさん
2005/06/03(金) 02:59:160338デフォルトの名無しさん
2005/06/03(金) 02:59:20の恥ずかしい勘違い?知識無し?の発言で
317と話す必要もなくなったなw
0339デフォルトの名無しさん
2005/06/03(金) 03:00:49以上、ほぼ自作自演でした。週末も自作自演の予定です。
ここまで読んでくださった皆様、どうもありがとうございました。
ねぇ、僕って孤独じゃないよな?
================================================================
0340317
2005/06/03(金) 03:01:18キミさ、なんでもいいけどあたまわるすぎ。自覚ないでしょ?
もう、勝手にお吼えください。
0341317
2005/06/03(金) 03:02:500342デフォルトの名無しさん
2005/06/03(金) 03:20:55だから、固定パイプラインは初心者用?
ウルトラ頭悪いねw
一応サンプルブラウザーにはビギナーレベル指定でベーシックHLSLなんてサンプルが有るんですが?
チューリアルの初心者以前、これから入門しますってレベルで物を言って
そのレベルでAPIデザインとか抜かしてるんだろうか...
0343デフォルトの名無しさん
2005/06/03(金) 03:47:16うざいよゲー専門学校生が。お前だろ初心者はw
恥ずかしすぎるぜこいつ。
0344デフォルトの名無しさん
2005/06/03(金) 03:56:13尊敬するぞ
尊敬するぞ
尊敬するぞ
尊敬するぞ
0345デフォルトの名無しさん
2005/06/03(金) 04:08:50だったら、はなっからシェーダーなんか使わねーで固定で書いてろ。
0346デフォルトの名無しさん
2005/06/03(金) 07:56:55ターゲット環境を低くするために、わざとやってるのかと思ってた。
0347デフォルトの名無しさん
2005/06/03(金) 08:10:430348デフォルトの名無しさん
2005/06/03(金) 08:26:370349デフォルトの名無しさん
2005/06/03(金) 09:49:34VC++7.1のReleaseのデバッグ無しで開始のみ面が描画されません。
デバッグ開始だと描画されます。
原因がさっぱりわかりません。
Direct3DのDebugモードとRetailモードで試してみても結果は同じで
やはりデバッグ無しで開始だと面が表示されません。
ReleaseじゃなくてDubugだと問題ありません。
解決方法を知ってる人がいたら教えてください
0350デフォルトの名無しさん
2005/06/03(金) 10:33:39法線で重要なのは絶対値じゃなくて向きでしょ。
法線を単位ベクトル化しても、ベクトルはベクトル。向きは変わらないんじゃないの・・・? ちがうの?
0351デフォルトの名無しさん
2005/06/03(金) 10:37:25問
正規化されていない法線A、Bがあります。
この法線どうしの角度を求めよ。(cosθでもよい)
0352デフォルトの名無しさん
2005/06/03(金) 10:37:440353デフォルトの名無しさん
2005/06/03(金) 11:06:35でもGPUって極端な話レイテンシが1000であっても
スループット1なら別に問題ないんだよな。
つまりガンガン正規化してもOKってこと?
0354デフォルトの名無しさん
2005/06/03(金) 11:12:52自分のプログラムを先頭から最後まで、100回見直す。
0355デフォルトの名無しさん
2005/06/03(金) 12:14:20痛いです。
0356名前は開発のものです。
2005/06/03(金) 13:04:091.DrawPrimitiveUP、DrawPrimitiveの違い。
速度で、DrawPrimitiveUP < DrawPrimitive
な理由は、DrawPrimitiveUPを呼んだあとに、頂点情報をGPUに転送して
描画待ちをしているせいなんでしょうか?
DrawPrimitiveは、頂点バッファのアドレスを指定してあとはDMAで頂点を
転送しているから描画待ちをせずに並列で処理できるから早いってことでしょうか?
2.半透明ポリゴンのソート方法
半透明ポリゴンのソートをポリゴンの頂点座標を透視変換して計算した
Zの値0.0〜1.0で比較してソートしているんだが激しく遅い。
0.0〜1.0を100分割して 0.01刻みでバケツソートしても遅い。
高速化する方法ってどんなのあるでしょうか?
0357デフォルトの名無しさん
2005/06/03(金) 13:29:454回目で直りました。thx
0358デフォルトの名無しさん
2005/06/03(金) 15:10:05もう直ったようだが、DebugとReleaseで動作が変わる場合は
まず変数の初期化がらみだと思っていい。
0359デフォルトの名無しさん
2005/06/03(金) 15:26:322. ソートのアルゴリズムを代えろ。
0360デフォルトの名無しさん
2005/06/03(金) 15:27:03仰るとおりでコピーコンストラクタの部分でした
0361356
2005/06/03(金) 18:27:21ソートのアルゴリズムっていっても
バケツが早いとおもうんだが、クイック、バブル、2分どれもだめだとおもう。
他にあるならおしえてくれ
0362デフォルトの名無しさん
2005/06/03(金) 18:59:50途中で53頂点と3頂点追加したい場合はどういう風にすればいいのでしょうか?
全部最初から頂点バッファを作り直さないで、
バッファのサイズを変更して3頂点だけ追加したいのです。
0363デフォルトの名無しさん
2005/06/03(金) 19:39:150364デフォルトの名無しさん
2005/06/03(金) 23:24:01頂点インデックスとか法線とかどうすんの?
0365362
2005/06/03(金) 23:55:03でも数万ポリゴンのモデルだとOpenGLより明らかに描画速度が遅いです
0366デフォルトの名無しさん
2005/06/04(土) 00:01:18自分が見えないところでやる分には構わないのか。
馬鹿の考えることはさっぱり分からん。
■ このスレッドは過去ログ倉庫に格納されています