- 1 名前:デフォルトの名無しさん [2007/09/08(土) 22:21:46 ]
- ※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part13 【C】 pc11.2ch.net/test/read.cgi/tech/1182351826/
- 797 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:27:57 ]
- >>795
いや、それって方法論でしょ? 何を表現したいかってことだよ それによってはそもそもその手法が正しいのか、って話になるから まあ、よほど重い処理でない限り、頂点シェーダで強引に計算してしまえばいい 大抵はピクセル処理でボトルネックになってしまうので、どうでもいいんで
- 798 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:08:54 ]
- >>795
だから、>>788で書いたとおり、DirectX9では無理。DirectX10のジオメトリシェーダでは可能。 無理だから、事前に「自分で」必要な頂点の情報を、対応する頂点に「仕込む」等の処理が必要になる。 ある頂点で参照可能な別頂点の数は、入力となるvレジスタの数で決まるから、「あるプリミティブ全体を 対象とする任意の頂点を相互参照」するなんてDirectXでは完全に無理。 このヒントを聞いて、「頂点に他の頂点を仕込む方法が具体的にわからない」なら、 シェーダの理解が足りて無いってことだから、 ttp://marupeke296.com/DXPS_No3_BasicOfVertexShaderProgram.html この辺の一番上の図を見て、頂点シェーダの演算部が参照可能なデータについて、もう一度整理する事を お勧めする。 >>797もいってる通り、実現方法を変更する方が現実的なんじゃないかな?
- 799 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:17:22 ]
- 便乗して質問
>>792のようにPosition0〜2まで3つ設定すると そこに何入ってるの? たとえば {1 1 0} {0 0 0} {-1 1 0} の三角形があったらどうなるの?
- 800 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:28:57 ]
- 何が入ってるかじゃなくて
何を入れるかを自分で決めるんだ
- 801 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:33:10 ]
- ごめん、Cgだから
何を入れるというと uniform型を宣言すると思ってしまって。 Cgでも未だに struct IN{ float4 position1 : POSITION float4 color : COLOR } に何が入ってるのかわかってなくて。 uniform型なら、明示的にブチ込んでるからわかるんだけども
- 802 名前:デフォルトの名無しさん [2007/11/10(土) 21:48:57 ]
- 実際のところ、頂点シェーダの
入力パラメータが何であるかなんで どうでもいいことだし、何を渡してもかまわない。 ただ最低限、同次頂点座標を1つ出力しなければならないってだけだ。
- 803 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:49:30 ]
- >何が入ってるのかわかってなくて
工工工工工工エエエエエエ(´д`)エエエエエエ工工工工工工
- 804 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:53:48 ]
- >>802
何が入ってるのかわからないままだと、結局何もわかってないままで >>803みたいなこと言われるので・・・
- 805 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 15:53:09 ]
- 質問です。
DirectX SDKのサンプルって、みんな「コード生成」->「ランタイムライブラリ」の設定が「マルチスレッド デバッグ」になってるじゃないですか。 これを、「マルチスレッド デバッグ DLL」にしてビルド通して実行しようとすると「MSVCR80.dllが見つかりませんでした」とか「MSVCR80D.dllが見つかりませんでした」 と言われて実行に失敗してしまいます。 これ、対処法ってないんでしょうか。 というのも、自前で作ったライブラリとSDKサンプルを組み合わせて使いたいんですが、ライブラリが「マルチスレッド (デバッグ) DLL」の設定でビルドしてあるものだから、 合わせたいんです。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:26:41 ]
- 見つかる場所 (PATHの通ってる場所とか) にDLLを置いとけばいいんじゃないの
- 807 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:35:07 ]
- 最近ワイドモニターのノートPCを使い始めたのですが、
フルスクリーンのゲームなどをするときに横に伸びてしまいます。 そこで、特定のサイズでフルスクリーンにするとき、自動的に左右をパディングして真ん中だけを使って写すようにしたいのですが、 そのようなソフトウェアを作ることは可能でしょうか?
- 808 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:40:26 ]
- はい。
- 809 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:45:25 ]
- ちなみに、そのようなハードウェアを作ることも可能ですよ。
- 810 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:12:02 ]
- でもそこらの同人ゲームはフルスクリーンで特に何もやってないのがほとんどじゃん。
- 811 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:36:58 ]
- >>810
TL頂点使ってると比率が変わるだけで表示しているものの位置が変わるからね。
- 812 名前:デフォルトの名無しさん [2007/11/11(日) 22:07:15 ]
- ドラクエ7の戦闘開始時に画面がばらばらに落ちる処理
をdirectxでやるのに参考になるサイトがあれば 教えてください。
- 813 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:33:27 ]
- ttp://www.nicovideo.jp/watch/sm1495093
ニコニコだけど、これ自作描画エンジンらしい。 エンジンどーこーわからんが、すげぇや
- 814 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:38:25 ]
- DirectXなの?
- 815 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:39:27 ]
- >>813
どーゆーレベルのエンジンかわからんが それでもスゴイ!と言わざるを得ないw 俺なんて、DirectXのサンプルブラウザーのチュートリアル4を ウンコをつんつんするような感じで弄ってるところだぞ
- 816 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:46:48 ]
- >>813
開発者のHP見てきた 3Dアクションゲーム作っちゃうレベルの人なので、 素人から見るとすごいが、この人のレベル的にはそんなに凄くないw
- 817 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:53:59 ]
- 確かにすごい
トゥーンレンダリングエンジンの開発 キャラのモデリング作成 キャラのテクスチャ作成 モーション付け アニメーション付け 考えただけで気が遠くなる
- 818 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:59:16 ]
- しかし、SIが正規版なのが気になってしまうw
- 819 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:03:30 ]
- 元プログラマー、現在NEET、てw
にしてはいいソフト揃えてんなあ モデルはちょっとクセがあるけど丁寧だし動きもなかなか自然だねえ
- 820 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:09:51 ]
- www.amazon.co.jp/exec/obidos/ASIN/4875934610/249-9467730-0997124
この人が見てるらしいこの本、ちょっと欲しいな!
- 821 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:18:55 ]
- XSI
100万とかテラスゴス! と思ったら、XSI 6 Foundation だと七万八千円なのね
- 822 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:32:49 ]
- 一番面倒なのは、モーションを入れる作業だね。
地道に振り付けと、表情のUV切り替え。 データさえ作ってしまえばエンジンの仕事なんてたかが知れている。
- 823 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:50:43 ]
- >データさえ作ってしまえばエンジンの仕事なんてたかが知れている。
どういうこっちゃ? つーか、プログラマにモデリングが不慣れだというのに ニコニコではモデリングばっか言われてるのな。 エンジンなんて作れねぇ。つーか無理
- 824 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:01:35 ]
- >>823
プログラマが個人でやる場合だと、データ作る方が大変な気がするw 両方やってるのがすごいなぁと思うよ
- 825 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:02:54 ]
- モデルデータを読み込んで再生するだけなら、普通のプログラマなら全然難しくないんだよ。
モーションデータの生成部分までエンジン側でやっているなら凄いプログラムだが、それはまずあり得ない。
- 826 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:17:03 ]
- そりゃ、モデルデータ読み込んで、toonシェーダかけて再生ってそりゃやるけど。
エンジンってそういうことなん? あと、全然難しくない、とか言うのやめたほうがいいよ。 つーかライティングやらシェーディング、加えてそれがリアルタイムってあたりで 組むのうんざりだ。
- 827 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:25:20 ]
- データ作るほうがコーディングより作業が大変だろ
- 828 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:28:54 ]
- ビューアは作ったからモデルデータとモーションを作れと言われるのと、
モデルデータは作ったからビューアを作れと言われるとがどちらが良いかと言われたら、 迷わず後者を選ぶ。 労力が全然違う。
- 829 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:33:44 ]
- いつのまに
プログラマーとモデラー・アニメーターの比較になってるんだ? プログラムの話をしようぜ。 リアルタイムラジオシティtoonレンダでも組んでくれ。
- 830 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:44:50 ]
- 光源が固定のラジオシティをリアルタイムといってしまっていいものかどうか。
- 831 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:52:55 ]
- ????
なんでラジオシティに光源の位置が、固定か可変か関係あるの?
- 832 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:08:03 ]
- は?全ては光源に依存してるんだから、光源が固定か可変かは大問題だろう。
CG屋さんか?
- 833 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:13:33 ]
- リアルタイムに光源を変化させるのってそんなに難しいの?
まだ、チュートリアル弄ってる段階なんでさっぱりさ!
- 834 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:17:05 ]
- ????
そりゃ光源に依存してるけど、普通はレンダリング時に光源の位置を決めて そこからラジオシティ入るだろ? つまりはアレか?人がグリグリ動いてる中で、光源(例えば太陽+複数のスポットライト)も グリグリ動いて、間接光だのをリアルタイムで時間積分して解いてるのか? つーか、リアルタイムの光源固定ラジオシティでさえまともに実装されてないのに。 光源がグリグリ動くラジオシティがあるっていうのか。ぜひ教えて欲しいわ。
- 835 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:20:12 ]
- >>833
リアルタイムで光源が動いて シェーディングをかけるのは難しくはない。nvidiaとかのサンプルでもある。 言ってるのは、ラジオシティ。
- 836 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:24:29 ]
- >>834
>>831によると、固定も可変も関係ないらしいから、光源固定のラジオシティも 光源がぐりぐり動くラジオシティもあるってことになるよね。
- 837 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:28:35 ]
- 3Dの勉強始めようかな…
なぜかゲームプログラマーになってしまったしな…
- 838 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:29:35 ]
- ここはあなたのブログではありません。
- 839 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:30:56 ]
- >>836
んー 俺の認識だと、ラジオシティでは1枚の光源は 固定したものとしてレンダリングするもんだと理解してるから 可変ってのは無いもんだと思って831を書いたんだけども。 ぃゃ、正直光源がグリグリ動くラジオシティがあるなら、参考にしたいから知りたいというのがある。 確かに1枚=1フレームとして、リアルタイムのラジオシティが出来るのであれば それは光源が可変なのだと思うけど。 SIGGRAPHでさえ、リアルタイムラジオシティは出てない、はず。 PS3を3台だかつかって、リアルタイムレイトレしてる変な人たちはいたけど
- 840 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 05:58:03 ]
- 変って言うなw
- 841 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:08:46 ]
- ピクセルシェーダで画面の輝度の高い部分にグレア処理をかけたいと思ってます。
画面と同じ大きさで作成したテクスチャにオブジェクトを描画して、 最後にそのテクスチャにグレア処理をかけて画面いっぱいに映し出された ポリゴンに描画するというやり方でやってます。 しかし、やり方が悪いのかぼやけます。根本から間違ってるのでしょうか? 画面いっぱいに映し出されたポリゴンは出力を見ながら手作業で大きさを 調整しているので、サイズが画面と完全に一致してないのが原因なのか…。
- 842 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:38:04 ]
- テクスチャ自体の解像度が低いとかじゃないの?
- 843 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:52:51 ]
- テクスチャのサイズですが、生成時に画面と同じ640*480を指定しています。
1024*1024等の2のべき乗で無いからぼやけるのでしょうか? 試しに1.5倍の960*720のテクスチャにモデルを描画した後640*480の画面に ピクセルシェーダで描画したらぼやけは無くなりました。 でもこれは高解像度から低解像度への変換なので当たり前というか…。
- 844 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:59:54 ]
- 使ってるビデオカードは2の乗数でないテクスチャに対応しているものか?
そうでないなら640*480なんていう半端なサイズのテクスチャは作れないが
- 845 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:07:26 ]
- ためしに2^nにしてみて検証
- 846 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:50:05 ]
- どうせヘルプをまともに読まずD3DXでテクスチャを作って、勝手に自爆しているだけだろ。
- 847 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:27:26 ]
- シェーダが使えるのにテクスチャが2^nでしか作れないなんて、
VP870(PS1.2)とかXabre(PS1.3)くらいで、シェーダモデル2.0以降なら 1つも無いと思うが。 俺はどうせ座標が0.5ずれてるFAQネタだと思うが。
- 848 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:33:05 ]
- ウィンドウサイズは640x480だけど
クライアント領域が640x480じゃないってオチは?
- 849 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:17:33 ]
- サンプルブラウザのチュートリアル6メッシュっちゅうのを動かしてみたんだが、
メッシュの回転や平行移動ってどうやればええのん?
- 850 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:33:42 ]
- >>849
ワールドマトリックスに好きな行列をセットしろ。
- 851 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:42:07 ]
- >>850
サンキュー!
- 852 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:56:16 ]
- 誰か>>801に答えてくれたりしない?
未だにだめっぽなのよ
- 853 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:03:58 ]
- >>850
行列のセットがよくわからなかったので、アフィン変換ちゅうのを使おうとしたんだけど、 こんなエラーが「error C2065: 'null' : 定義されていない識別子です。」 // Set up world matrix D3DXMATRIXA16 matWorld; D3DXMatrixRotationY( &matWorld, timeGetTime()/1000.0f ); D3DXVECTOR3 t(1.0f, 0.0f, 0.0f); D3DXMatrixAffineTransformation( &matWorld, 1.0f, null, null, &t); // ここでビルドエラー g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); なんで、D3DXMatrixRotationY、D3DXMatrixLookAtLHは使えるのに、 お友達っぽいD3DXMatrixAffineTransformationが使えないのかわかる?
- 854 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:04:40 ]
- null→NULL
- 855 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:06:24 ]
- >>854
ひゃっほう(’’*
- 856 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:26:17 ]
- 質問です。
3Dゲームでパラメータ等を2Dで表示する機能を実装したんですが、すごく重くなってしまいました。 本で調べてみたのですがClearでZバッファを一度消しているのが原因らしいです。 とりあえず原因はわかったのですがどういう解決策をとればいいのかわかりません。 いい解決策とかパラメータ表示の代替案とかご存知なら教えていただきたいです。
- 857 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:35:57 ]
- どの本の何という記述からそう思ったのか答えよ。
- 858 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:42:58 ]
- 軽くエスパーすると
フォント描画が重いんだと思うけど・・・
- 859 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:49:29 ]
- >>852
頂点の配列は自分で作ってるんだろ? んで、それをGLの関数にセットして描画してるんだろ? それだよ。 >>856 Zバッファをクリアせずに 文字を書くときだけZテストをOFFにすれば?
- 860 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:51:05 ]
- >>857.858
すみません直りました。 コードに手は加えていないのに突然直ったので たぶん別の事が原因だったと思います。それが何かはわかりませんが…。 お手を煩わせて本当に申し訳ない。
- 861 名前:860 mailto:sage [2007/11/12(月) 22:53:14 ]
- >>859さんも解答してくれてありがとうございます。
>>860の通り解決しました。重ね重ね申し訳ない。
- 862 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:10:35 ]
- それよりもZバッファをクリアすると遅くなる情報の元になった書籍名を答えろ。
- 863 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:22:40 ]
- >>862
マスタリングDirectXプログラミングという本です
- 864 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:49:30 ]
- 初心者が買ってはいけない本に認定
- 865 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:54:54 ]
- こんな本でてたのか
日本語でDirectX関連の本は久しぶりだな
- 866 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:57:58 ]
- 今、DirectX9SDKで2Dのシューティングゲームを作っています。
ゲームのプログラムは「シューティングゲームプログラミング」の本を参考にして作っているのですが、この本のサンプルでは弾やキャラクタが全て3Dメッシュで作られています。 作りたいのは2Dのゲームなので、DirectX8の2Dゲーム作成のページを参考にしてDX9の仕様に変えながら、後でゲームに組み込むことを目的にして2D描画周りの勉強をしています。 本のサンプルにもテクスチャを描画する関数はついていたのですが、頂点位置を指定しての変形描画や行列を用いた回転を使いたかったので、自分で関数を作ってみようと思いました。 今触っているプログラムの簡単な描画の流れは、 @D3DXCreateTextureFromFile を使ってpngファイルからテクスチャを作成 ASetTexture でテクスチャをデバイスにセット BDrawPrimitiveUP でバックバッファに転送 CEndScene を待って Present でフリップ (方式はD3DSWAPEFFECT_DISCARD) というものです。 そこで質問なのですが、テクスチャを描画した際に像がぼやけたようになってしまうのはどうすれば直せるのでしょうか。 現在はステージ画面のフレーム(透過部分を四角く抜いたワク)を描画する段階で、テクスチャの大きさは640x480です。 ファイル形式はpng、bmp、tgaを試してみましたがどれもぼやけてしまいます。 ttp://www.uploda.org/uporg1109654.png 具体的には、画像の左側の絵を描画すると右のようになってしまいます。 解決策を教えて下さいませんでしょうか。
- 867 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 02:42:36 ]
- ちょっとだけ上を見るとか頭に無いのかな
- 868 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:05:12 ]
- 倍の解像度のテクスチャを用意して、0.5ずつ座標をずらしたら綺麗に表示されました。
上を見れなくて申し訳ありませんでした。
- 869 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 13:30:43 ]
- >頂点の配列は自分で作ってるんだろ?
>んで、それをGLの関数にセットして描画してるんだろ? だから、頂点が3つあったときに(0 0 0) (1 1 0) (-1 1 0) struct IN{ float4 position1 : POSITION float4 color : COLOR } だと、POSITIONが1個しか無いじゃん 1個しかないのに、3つの頂点入るの? 3つのうちのどれかが入るんでしょ?それuniformじゃないと指定できないじゃん 勝手にCgの方でやられたってこっちが困るんだよ 3つのうちどれが入るか言ってよ!ヴァカ!
- 870 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 13:50:10 ]
- 自分の不勉強を棚に上げて逆ギレとは…。
てか、>>800で終了だろ。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:52:26 ]
- >>868
なんで倍の解像度にする必要があるの?
- 872 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:12:14 ]
- ピクセルシェーダ2.0を使う場合って、そのPCが1・1までしか対応
していない場合どうなるのでしょうか? エフェクトファイル読み込んだ時点でエラー発生でしょうか? 手元にあるのマシンが全部2.0対応なので、誰か分かる人ご教授お願いします!
- 873 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:15:26 ]
- >>870
だから、何を入れるのか決めるのってCgだとuniform使うんだってば 何回も同じこと言わせないでください>< uniformがついてないからわからないんですぅ! と、厨臭いこと言い方ですいませんでした。自分の勉強不足です ただ一人じゃわからなくて。アドバイス頂けたらと思って伺いました。 ほんとすいません。教えてください
- 874 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:41:34 ]
- /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i、
i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|i /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i゙i /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/|;;ト;ト;;;;;;;;;;;;;;;;;;;;;;;;ヽ、 /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ;;ノシ/ノ |゙!iヽヾ;;;;;;;;;;;;;;;;;;;;;;ヽ、 /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ンツン ! ヽ、 ヾ;;;;;;;;;;;;;;;;;;;;;;;ヾ /;;;;;;;;;;;;;;;;;;;;;;;/シンて__;;;、 ,;;;.ソ ~゙ヽ;;;;;;;;;;;;;;;;;ヽ /;;;;;;;;;;;;;;;;;;;;;/ゾ ゙! / ノミ;;;;;;;;;;;;;;;;ヽ、 /;;;;;;;;;;;;;;;;;;;;入 ーt┬‐ュ ヽ ( <エコブ ┃ノ;;;;;;;;;;;;;;;;;ヾ /;;;;;;;;;;;;;;;;;;;;;;;;ヽ┤  ̄_ノ ゙i i ‐-、 |;;;;;;;;;;;;;;;;;;;;;;;;゙i 必要な分は見せたということだ . /;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::l、 : : ゙ ノ;;;;;;;;;;;;;;;;;;;;;;;;;;l /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::T:、_ r‐ i i┐ イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l これ以上は見せぬ . l;;;;;;;;;;;;;;;;;;;;;;;;;/;| k┴ヽ、 /‐、l´゙)~ヽ ( |イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;l l;;;;;;;;;;;;;;;;;;;;;;イ;;;| | / / _゙'_'゙ ゙i )| |;;;;;;;;;;;;;;;;;;;;;;;;;;;l l;;;;;;;r‐''゙;;;;:;;:;;;;l ヽ、 ,|. ( f‐ニ‐ヽ /./ /ヾヾ;;;;;;;;;;;;;;;;;;;l ヾ/;;;;;;;;;:;;;;:;;;;;ヽ ゙ヽ\ヽ―'゙――゙'‐// / /;;;:::....゙''‐、;;;;/ _,.,.r/ ,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ ゙i ゙i、゙'v v' i / ノ;;;;::::;;;;;;;;;;;;;;;:.ヽ、 /::/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ、 ゙r_ヽ! 、,. ! | ,/;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;ヽ、
- 875 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:00:53 ]
- >>873
てゆーかホントにお前が何がやりたいんだよ >>795がやりたいとして ホントに頂点数は5なのか? それくらいならできなくもないけど頂点数が数十個のオブジェクトを この方法で処理するのは土台無理な話だし ホントにそんな処理が必要なのかも疑わしい いま自分が目指してる最終地点と それに対してどういうアプローチをしてるのかぐらい書いてもらわんと 説明する気も起きない
- 876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:31:58 ]
- >>795さんではありません><
単純に>>869の状況のときに float4 position1にはどんな座標が入ってるか知りたいだけです! ポリゴンは(0 0 0) (1 1 0) (-1 1 0)で三角形指定して、頂点が3つあるのに シェーダーで受け取るPOSITIONセマンテックは1つだけっていうのがわからないのです Output { float4 position : POSITION; float4 color : COLOR; }; main (float3 position : POSITION) { Output OUT; OUT.position = float4(position, 1); OUT.color = float4(0, 1, 0, 1); // RGBA green return OUT; } なんでfloat3 positionが1個だけなの? じゃあ、これに float3 position2 : POSITION1とかしたら、何が入るの? (0 0 0 ) (1 1 0)? それとも(-1 1 0)? そこら辺の説明が本でも何でも載ってないのでわかんないんです
- 877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:39:44 ]
- >>876が何を言いたいのか良くわからんが
頂点数が3個なら mainは頂点数と同じ数だけ つまり3回呼ばれてる 1回目のmainのpositionには(0,0,0)がはいっていて 2回目のmainのpositionには(1,1,0)が以下略 ここまではOK?
- 878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:55:26 ]
- そして
float3 position2 : POSITION1だが Cgがどんなものなのか知らんので POSITION1なんてセマンティックがあるのかは知らんが あると仮定するとposition2には何も入ってきていない position2になにを入れるかは 頂点情報を設定するときに自分で何をいれるのか決める部分なので 何も指定してないのなら何も入らない
- 879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:05:01 ]
- >>877-878
ありがとうございます>< 間違ってたところがありました。POSITIONはセマンティックが1つだけで COLOR1とCOLOR0、 TEXCOORD0〜7でした! でもPOSITIONのところはわかりました!ありがとうございます!その頂点分呼び出されて そのときはPOSITIONに、その値が入るんですね! でもCOLOR0〜1とTEXCOORD0〜7がわからなくなってしまいました。 これも外部から指定するのでしょうか。uniformじゃ無いのに。
- 880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:30 ]
- なんという理解力の無さだ・・・
- 881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:31 ]
- 例
struct Vertex{ D3DXVECTOR3 position ;// 頂点の座標(必須) D3DXVECTOR4 color ; D3DXVECTOR3 position1 ;// 拡張した頂点情報 D3DXVECTOR3 position2 ;// 拡張した頂点情報 } ; #define MY_V (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2|D3DFVF_TEXCORDSIZE3(0)|D3DFVF_TEXCORDSIZE3(1)) main ( float3 position : POSITION float3 color : COLOR, float3 posion1 : TEXCOORD0, float3 posion2 : TEXCOORD1 ) { ・・・ TEXCOORDはテクスチャ座標を入れるために用意されてはいるが 別にテクスチャ座標を入れないといけない決まりはない たとえば複数光源の計算をしたいときにそれぞれの光源ベクトルをいれたりとか ここはプログラマが必要に応じて拡張すべきところでみんなはこれのことを言っている 一つ一つの頂点に複数の情報を持たせられるよってだけで 複数の頂点の情報がはいってくるわけではない
- 882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:14:53 ]
- つまりTEXCOORDは何入れてもいいということですか。
twoTextures(float2 position : POSITION, float2 texCoord : TEXCOORD0, uniform float2 leftSeparation, uniform float2 rightSeparation, out float4 oPosition : POSITION, out float2 leftTexCoord : TEXCOORD0, out float2 rightTexCoord : TEXCOORD1 ) { oPosition = float4(position, 0, 1); leftTexCoord = texCoord + leftSeparation; rightTexCoord = texCoord + rightSeparation; } でもこういう風に、「入ってくる側のfloat2 texCoord : TEXCOORD0,」の場合はプログラム側で 指定しないとダメなんですよね。 outのところは、自分の都合にあわせて設定してるっていうのはわかるんですが。
- 883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:30:31 ]
- やべえ、頭痛くなってきた
誰か、バトンパス
- 884 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:53:21 ]
- ↓
↓ ↓
- 885 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:28:46 ]
- 教えて君・粘着君に付き合うのが嫌なら無視するのが常識。
- 886 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:33:51 ]
- お前頭いいな。
- 887 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 05:26:10 ]
- 高さマップの画像からデコボコな地形を生成したいんですが、
全くやり方が分かりません。ヒント頂けないでしょうか?
- 888 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:08:10 ]
- 画像の1ドット毎を高さに変えるだけ。
RGB、つまり256色x3色=768段階の高さが取得できる(アルファも取りたけば自由に)。 黒なら高さ0、白なら768xαという高さに決めればあとは自分でその高さに点を配置して面を作っていく。
- 889 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:31:08 ]
- 24bitもってて768段階? なんでbitでやらんの
あと移動可などのフラグとか含めたりする。
- 890 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:58:39 ]
- 俺は、>>887の質問の内容が分からん。
エスパーの例題かと思った。 元データはバンプマッピング用のテクスチャの事? デコボコな地形って何?ポリゴングリッドの事? それは、DirectXの質問なの?
- 891 名前:887 mailto:sage [2007/11/15(木) 12:27:14 ]
- 言葉足らずで申し訳ないです。
高さマップの画像を元に、メッシュを作成する方法です。 >>888 画像のデータを1ピクセルごと取得していって、自分で頂点を打っていく ということでしょうか?
- 892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 13:01:48 ]
- それ以外にどうしろと?
- 893 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 14:49:52 ]
- >>891
hight-fieldのことでしょ? 濃淡グレーマップが高さを示しているっていうの。 単純に0-255でRGB値を読み込んで、それをポリゴンの1頂点として メッシュを刻んでいけばいいんでないの? RGB値が読めないとかいうなら PPM、PGMのASCIIモードで保存でもして読み込めばいい。 当然、ピクセル分の頂点が出来てしまうからデータは重い(255×255pixelなら、255×255頂点) あと頂点間のつながりもプログラムで指定する。 ということなのでは?
- 894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:11:38 ]
- たぶん、
そういう超便利関数はないの? って聞いてるんじゃね?
- 895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:26:53 ]
- pov-rayとかならあったかな。超便利関数
ポリゴン生成してくれるまでは知らんけど。
- 896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:00:44 ]
- っていうか、普通のバンプマッピングを使ってレンダリングしたら駄目なの?
地形とか作りたいなら、元データに高さマップ使う意味がわかんないし。
- 897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:27:01 ]
- ビットマップなんてヘッダ以外はただの2次元配列じゃないか
- 898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:48:33 ]
- www.microsoft.com/japan/msdn/coding4fun/gamedevelopment/beginning6/default.aspx
こんなの? MDXだが。
- 899 名前:887 mailto:sage [2007/11/15(木) 19:15:13 ]
- >>892
なかなか初心者には分からないものです。 >>893 なるほど、非常に参考になります。 >>894-895 そういうことになりますかね。xファイルをロードする関数があるので、 高さマップなどにも専用の関数がある、もしくは似たようなことが出来る と思ってました。 >>896 バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。 それと地形作成専用のツールの出力が高さマップだったので。 逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する 手法が存在するのでしょうか? >>898 実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体 よく理解していないなかったので手詰まり状態でした。 アドバイスのおかげでそのソースコードの意味も今分かりました。 とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。 ありがとうございました。
- 900 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:53:13 ]
- やってることが、どう見てもhight fieldだ。
ハイトフィールド、hight fieldでググると色々出てくるよ。 使い古された手法だから、結構ソースはあるはず
- 901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:36:14 ]
- 助言をお願いします。
テクスチャを動的に生成するため、 D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, 0, D3DFMT_A8L8 ,D3DPOOL_MANAGED, &pTexture); で作成してたテクスチャを pTexture->LockRect(0, &stRect, NULL, D3DLOCK_DISCARD); とロックして書き換えていたのですが、 ふと、DirextX Control Panelで、Debug Runtimeに変更したとたん、 エラーコードD3DERR_INVALIDCALLが返ってくるようになりました。 Retail Runtimeでは動くので最終的には問題ないですが、 Debug Runtimeで動かないのが気になります。 何かご指摘の点があればよろしくお願いします。
- 902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:06 ]
- >>901
デバッグ出力に何か情報でてないの?
- 903 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:23 ]
- パラメータを見直した?
D3DXCreateTexture、LockRectの箇所でデバッガで止めて、引数の値を精査した?
- 904 名前:901 mailto:sage [2007/11/15(木) 23:37:31 ]
- レスありがとうございます。
デバッグ出力は何も出てきていません。 パラメータは例で示した感じです。 動作自体はRetail Runtimeで目的通りに動作しているので、 何が間違っているのか・・・?
- 905 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:51:43 ]
- D3DLOCK_DISCARDは、動的テクスチャのみ有効なフラグで
動的テクスチャの作成にはD3DPOOOL_MANAGEDは使用できないと ヘルプにあるが。また、D3DUSAGE_DYNAMICを指定してないし。 つーか、デバッグメッセージは出てるだろ、メッセージレベルを上げろよ。
- 906 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:16:52 ]
- >>904
D3DERR_INVALIDCALLが返ってきて、デバッグ出力に何も出ないなんてことは 最近のSDKでは起こらないと思うんだが。 >>901のコードを手元で試したらちゃんとメッセージが出たんだがね Direct3D9: (ERROR) :D3DLOCK_DISCARD is allowed only with dynamic textures
- 907 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:18:10 ]
- >>906の言うとおりならSDKが古いんじゃないの?
- 908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:34:37 ]
- >>906のメッセージはかなり昔のSDKでも出る
恐らくは>>905の言うとおりデバッグ出力レベルを上げてないだけかと Retailランタイムでは動作するってのが分からんけど
- 909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:40:05 ]
- Retailで動くってのは無効なフラグをいちいちチェックしたりせずに無視してるだけなんじゃないかなたぶん
- 910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:52:49 ]
- DebugとRetailで、関数からの戻り値(HRESULT)が変わることもあるのかな?
>>901でLockRectが失敗すると、当然D3DLOCKED_RECTの値も無効な訳で、 そのまま処理進めると間違いなくAccess Violationな気が…
- 911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:59:38 ]
- とりあえず、仕様通りに書き直せばいいんでね?原因なんて暇人に調べさせておけ・・・
ってまさか、これは調べさせる釣りなのか?!
- 912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:12:59 ]
- これはまたまんまと
- 913 名前:901 mailto:sage [2007/11/16(金) 02:43:16 ]
- レスありがとうございます。
D3DPOOL_MANAGEDで作成してること事態が問題でした。 おかげさまで、 D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8L8 ,D3DPOOL_DEFAULT, &pTexture); と修正することにより、Debug Runtimeでもエラー無く動くようになりました。 ただ、Debug Output Levelを最大にしても、エラーメッセージが何も出でないのは気になりますが・・・。 ちなみに、SDKはJune 2007をVistaで使用しています。
- 914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:10:11 ]
- デバッグメッセージの見方を知らないのかな?
- 915 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:53:14 ]
- VC++8Expressだと出力ウィンドウにはネイティブのデバッグメッセージは
表示されないという罠があったりなかったり。
- 916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:19:26 ]
- 質問者は、自分の環境とか使ってるDirectX SDKのバージョンを書かないけど、
このスレではそれがデフォなの?
- 917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:13:20 ]
- SDKはみんな2004Octを使ってるからいちいち書かなくてもいいだろ
- 918 名前:901 mailto:sage [2007/11/16(金) 12:29:42 ]
- VC++2005EEだと出力ウィンドウに出てました・・・orz
主にコンソールで作業してるもので・・・ お騒がせしました。
- 919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:46:44 ]
- DirectX9で2Dゲームを作っていて
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); の拡大縮小フィルタを設定しているのですが、 等倍や縮小描画をすると異常にぼやけてしまいます 何故かMINFILTERではなくMAGFILTERの方を切ると縮小なども綺麗に描画されるのですが 原因として考えられることは何でしょうか?
- 920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 15:13:05 ]
- >>919
ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/textures/coordinates/mappingtexelstopixels.asp これは?
- 921 名前:919 mailto:sage [2007/11/16(金) 18:23:09 ]
- >>920
レスありがとうございます DrawPrimitive前でテクスチャ座標を全て-0.5fにすると解決しました
- 922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:29:22 ]
- テクスチャ座標を全て-0.5fにする
・・・
- 923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:34:22 ]
- DirectXでリアルタイムレンダリングを解説した書籍でお薦めのものってありますか?
- 924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:26:44 ]
- まてまて、DirectXって基本的にリアルタイムレンダリングを前提としてると思うんだけど。
プリレンダリングの解説書なんて見たことねーぞ。
- 925 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:59:37 ]
- リアルタイムレンダリング in DirectX
ttp://www.amazon.co.jp/dp/1931841276
- 926 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:26:21 ]
- 現在XP+DX9なのですが、DX10に向けてDX9で磨いたほうがいい技術はどういうものでしょうか。
DX9からDX10に変わることで何がどう違うのかいまいち分からなくて・・・ DX8からDX9になったときのような仕様変更のレベルじゃないですよね、単なる思い込みでしょうか。
- 927 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:12 ]
- 必用なのはドキュメントに目を通し、サンプルを読み、
こんなところでグダグダグダグダくだらないことを言わない技術。
- 928 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:52:22 ]
- 持っているグラボの性能にもよるけどピクセルシェーダに慣れておけばいいかもね
|

|