[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/11 09:12 / Filesize : 247 KB / Number-of Response : 959
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part17 【C】



1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part16 【C】
pc11.2ch.net/test/read.cgi/tech/1202634347/

349 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:40:12 ]
すみません、Visual C++ 6.0でDirectXのXファイル読み込みをプログラムしたのですが
上手くいきません。ビルドには成功したのですが、実行してもすぐに終了してしまいます。
SDKはDirectX 9.0 Update summer 2003を使っています。
デバッグ内容も下記に記載します。分かる人、教えて下さい、宜しくお願いします。


350 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:42:52 ]
'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d9.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d8thk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msvcrt.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\advapi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした

351 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:44:37 ]
'C:\WINDOWS\system32\rpcrt4.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\secur32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\version.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\winmm.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\dinput8.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imm32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\lpk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\usp10.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\uxtheme.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTF.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\Downloaded Program Files\CnsMin.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shlwapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imagehlp.dll' をロードしました、合致するシンボル情報は見つかりませんでした。

352 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:10 ]
単純にループ書いてなくて一回素通りして終了するプログラムになってるとかじゃないよね?

353 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:13 ]
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTFIME.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ole32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17W.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shell32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17DE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17AE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\hid.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\setupapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wintrust.dll' をロードしました、合致するシンボル情報は見つかりませんでした。

354 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:45:54 ]
'C:\WINDOWS\system32\crypt32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msasn1.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ntmarta.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wldap32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\samlib.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3dxof.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
スレッド 0xF2C 終了、終了コード 0 (0x0)。
プログラム 'H:\CLUB SEE\3Dチェス\my3dlib\Debug\my3dlib.exe' はコード 0 (0x0) で終了しました。


355 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:46:03 ]
ググレカス

356 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:49:20 ]
もはや荒らし
VisualStudio使ってるなら、ブレークポイントで止めて一行ずつ実行してけカス

357 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:13:01 ]
mviewでXファイルを開いた時、アニメーションのリストがメニューの
Animation > Animations の下に最大50個現れると思うのですが、
Xファイルを開いただけだと何故か現れません。

Add Animationで追加オープンすると、最初に開いたXファイルのアニメーションと、追加で開いたXファイルのアニメーションが両方現れるのですが…
AddAnimationせずに、最初に開いたXファイルのアニメーションを表示する方法はありませんか?



358 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:25:14 ]
>>347
レスありがとうございます
インストール時にエラー文はでなかったんですけどねぇ・・・

359 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:28:45 ]
パスも通せない馬鹿は死んでいいよ

360 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:37:22 ]
>352
ループには問題なさそうですね。

>356の言う通りにしたら解決したわ、もっともブレークポイントなど使わずに
一行ずつ実行していったがな。ヒントありがとよカス。


361 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 02:13:27 ]
>>359
お前が死ねキモデブ

362 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 03:13:11 ]
みなさーん
池沼には優しくしてあげましょう
社会のゴミですが同じ人間です

363 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 04:22:37 ]
ttp://www.imgup.org/iup605620.jpg.html
コンパイル中↑こういうのが出た後に下みたいに「シンボルが読み込まれていません。」が大量に出るんですけどどうしたら出なくなりますか?

'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。

364 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 05:07:45 ]
363は自己解決しました

365 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 06:06:15 ]
>>364
どうやったら解決したの?
原因は?
もう一回>>1を読んでね。


366 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:52:25 ]
>>365
自己解決の場合は誰に礼を言うの?w

367 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:54:12 ]
>>360
ヒントもらえたんだから感謝せぇよアホ
合致するシンボル情報は見つかりませんでしたってのは、
「デバッグ用にDLLを読み込んだが、特に必要な情報は無かった」
とかの意味だ。(厳密には違うかもしれんが)

それはデバッグ実行すると当たり前に出る内容であって、
そんな大量の、何の問題もない(かつDirectX無関係)の内容を貼り付けたら
荒らしとか言われても仕方無い。



368 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:49:17 ]
質問です
Xファイルを使ったモデルにマルチテクスチャを行ないたいのです
例えば地面に見た目用のテクスチャーと、バンプ用のテクスチャーを適用したいと思っています。

ただ、Xファイル系のサンプルを見る限りテクスチャーを2つ使うことは想定外のように見えました。
カスタムテンプレートという仕組み上、自前でそういうXファイルは作れそうですが、3DモデラーがそういうXファイルを吐いてくればれば(あまり)意味がありません。

マルチテクスチャなXファイルというのは一般的ではないのでしょうか?
LWを使ってXファイルを吐いているのですが、もし良い方法があれば教えていただけると幸いです

369 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 16:24:58 ]
ピクセルシェーダーで合成すればいいんじゃじゃね?

370 名前:デフォルトの名無しさん [2008/05/07(水) 19:17:02 ]
今頃DirectX10のサンプルみたら、三角形ポリ描画するだけでシェーダー必要とかXファイルがサポートされてないとかアホか。
DirectX使うのは思いついたゲームをちゃちゃっと作りたいからなのに、生産性下げてどうする・・・



371 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:28:33 ]
質問です
頂点ブレンディングはDirectXの機能で実装するのと
頂点シェーダで実装するのとでは、どちらが一般的ですか?

372 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:52:57 ]
>>371
調査統計をとるようなマーケティング能力や、
規格を立ち上げる権限をもった人間がいるわけでもないのに、
そんな不確定な情報を誰とも知らない人間に聞くその意図を明確にせよ。

ロボットのように命令が無ければパンツもはけないというのなら、
一般的かどうかを聞くより、最初からあらゆる事を指示してと言えばいい。

373 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 22:50:41 ]
>>372 答えてやれよ。あんたは業界人なのけ?

374 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:05:41 ]
まずは一般的という基準を明確にすることから始めないといかんだろ。

375 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:08:23 ]
聞き方が不味かったのかな?
ここの人たちはどっちでやってますか?と言う聞き方ならまだ良かったとか?

376 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:10:29 ]
人それぞれ

377 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:11:53 ]
ターゲットマシンによるべ
あくまで古いマシンでも動かしたいなら頂点シェーダ使うのはきびしいんじゃね?



378 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:12:24 ]
おまえら意地悪ですね
俺はこうしてるってだけでもいいんじゃないの

379 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:18:02 ]
そもそもシェーダを利用するのはDirectXの機能とは言えないのか?
シェーダを利用するしないに限らず、ハードが対応していなければ、
DirectX側がエミュレーションするし、していなければハードが処理するだけで、
データを渡すのはDirectXが処理していると言える。

380 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:20:17 ]
行間から固定機能パイプラインorシェーダと読めたんだが違うのかな?

381 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:20:18 ]
つまりDirectXではなくOpenGLからシェーダを利用するかどうかという話なのだろう。

382 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:34:58 ]
どちらが一般的かと言われれば固定機能パイプラインだろう
なぜならそれしかなかったから
だが、いずれ消え行く技術をいまさらやってもだし
シェーダーでやっといたほうが後々まで使えるんでね?

383 名前:291 mailto:sage [2008/05/08(木) 00:04:46 ]
仕方が無いのでDXUTの解析から始めようと思います。
(解析して光明が見えてくればいいのですが・・・)


384 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:51:33 ]
馬鹿はシェーダーを使えない。それだけ。

385 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 01:43:58 ]
頂点ブレンドってスキンメッシュとかのことよね?
だとしたら、一般的とかいうより色んな制約で変わってくるんじゃね?
・自前形式ではなくXファイルを使うなら、D3DXのスキンメッシュサンプルと
 同じ方法が使える
・でもそのやり方だと行列パレット使うので関節のSLERPが出来ない(LERPになる)
 そこらへんにこだわると、必然的に自前コードで広げることになる
・でも固定機能パイプラインの行列パレットは、最近のビデオカードではほとんど
 ハードウェアサポートされてない(ソフトウェア頂点処理に頼ることになる?)
・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない
俺がやった限りこういう事情が絡んで来たから、色々調べつつ
自分のやりたいことと照らし合わせてたら必然的にやり方は決まるよ。

386 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 09:04:59 ]
DirectX9使ってるんですけど
ID3DXEffect::SetTexture とか ID3DXEffect::SetFloat って
コスト高いんですかね?
ループの内側で使っちゃダメかな?

387 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 10:13:12 ]
>>371
頂点シェーダでやるのが良いと思うよ
まず、ソフトウェアエミュで頂点シェーダを行なってもそれほど重くないのが1つ。
ブレンド可能数が頂点シェーダのほうが融通利くのが1つ。
他の頂点シェーダエフェクトと一緒に利用できるのが1つ。

固定パイプラインでハードウェア処理の頂点ブレンドやるとバグるグラボが少なからずある
(ドライバアップデートすればなおるんだけど、ユーザーは必ずしも…ね)
だから私は頂点シェーダ+ソフトウェアエミュ派




388 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 10:22:30 ]
>>385
横槍で質問

・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない

これって、1頂点へ影響するボーンが最大80って意味?
それともモデル全体を通して80ボーンが限界って意味?

389 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 12:41:17 ]
必要に応じて分離すりゃいいだけ

390 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 13:11:36 ]
DrawPrimitive1回に対して80ボーンが限界って事。
D3DXMesh関係だと其処を考慮してDrawPrimitiveを何回かに分けて256本までのボーンに対応できるようになってるだろ。

391 名前:385 mailto:sage [2008/05/08(木) 17:00:17 ]
うん、説明不足だったけど1回の描画では、ってこと。
>>390みたいにすれば確かに制限は無くなる。
自分はやってないからわからんけど、
事前に頂点のリンクと面の接続を考慮してメッシュを分割しておけばいいかと。

392 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:18:49 ]
ミス、>>389みたいにすれば。
D3DXMeshが自動で何かやってくれるのは知らない

393 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:25:41 ]
うわ、最近D3D始めたばっかりなんだけど、スキンメッシュってそんなに定数レジスタ使ってるなんて気づいてなかったw
D3Dのサンプル様様だなぁ…
ちゃんと26ボーン毎に分割して、正常に表示できるように調整されてるっぽ
(サンプルのSkinnedMesh)

394 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 19:56:39 ]
アプリが終了すると
Direct3D9: (ERROR) : [0] : Address 04F1E4CB
Direct3D9: (ERROR) : [1] : Address 04F1E59B
Direct3D9: (ERROR) : [2] : Address 04F1E440
Direct3D9: (ERROR) : [3] : Address 0501CCA5
Direct3D9: (ERROR) : [4] : Address 05023345
Direct3D9: (ERROR) : [5] : Address 05002898
Direct3D9: (ERROR) : [6] : Address 05016E13
Direct3D9: (ERROR) : [7] : Address 00486437
Direct3D9: (ERROR) : [8] : Address 00474CBE
Direct3D9: (ERROR) : [9] : Address 004770CA
Direct3D9: (ERROR) : [10] : Address 7C23ABCC
Direct3D9: (ERROR) : [11] : Address 7C23B209
Direct3D9: (ERROR) : [12] : Address 7C235CC1
Direct3D9: (ERROR) : [13] : Address 7C22FF89
Direct3D9: (ERROR) : [14] : Address 7C22F067
Direct3D9: (ERROR) : [15] : Address 7C22EFDE
が複数行

みたいなデバッグログ(OutputDebugStringで書けるやつ)でるんだけど
何が悪いんですか?

あと、m_pd3dDevice->GetRenderTargetで取得したやつは、
Releaseすべきですか?

395 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:00:30 ]
ワンスキンしか作れないとかいうウンコモデリングソフトに当たったら最後w
なんでもかんでもすべての頂点に影響与えるとかギャグですか?w>某会社の自作モデリングツール

 捨 て ち ま え よ ! (中小害虫社員(28歳♂))

396 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:01:03 ]
同い年ですね。
わかります。

397 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:14:45 ]
>>395マ板でぶちまけろ



398 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:16:24 ]
371です
ありがとうございます
とりあえず頂点シェーダでやってみます

399 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:18:32 ]
>>395
DrawPrimitiveが減らせるので逆に高速化することが可能な場合も多々。
たとえばロボットみたいなものをパーツ毎にDPするよりは、ウェイト仕込んで
ボーンでドーンと1回のDPで描く方が実は速い。

400 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 00:29:29 ]
>>395
せめてそのウンコモデリングソフトが何か書いてくれないと

401 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:47:40 ]
>>399
言い訳にしか聞こえないw

402 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 06:45:56 ]
どう考えてもボーンとかよくわかってない人がとりあえず
頑張ってみました的臭いするやんか?

403 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 10:28:23 ]
>>401
昨今のグラフィックカードでは常識

404 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:53:11 ]
スキニングの計算をCPUでやることになるから
グラフィックカードあんまり関係なくね?

405 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:13:41 ]
ボーンを使おうが使うまいが階層のマトリックス演算は結局行なう。

そのマトリックスをWorldとして頂点シェーダーで計算するか、
スキン用のマトリックスとして頂点シェーダーで計算するかの違いだろ。

ボーンの場合Offset用の演算が加わるが、
DrawPrimtiveのコールはマトリックスの乗算とは比較にならないくらい重い。

スキンの処理までCPUでやるっつーなら話は別だけどDirectX7でやってるわけじゃないっしょ。

406 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:29:43 ]
スキンの処理までCPUでやるようにしないと、この輪郭線抽出はできませんよね?
ttp://www.twin-tail.jp/contents/vsdx8/d3d/011/index.htm

407 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:08:51 ]
>>406
DirectX7世代でやるならそうなる。

それ以上ならもっとよい方法が存在する。



408 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:43:33 ]
>>407
よかったら輪郭線抽出について情報いただけませんか

Zバッファの差を見る方法や、マテリアル境界を見る方法、モデルをちょっと太らせて裏返して黒描画する方法など色々調べましたが
406のURL先ほどまで「正確」で「自在な太さ」にできる術が見つかりませんでした

409 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:35:32 ]
トゥーンレンダリング

410 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 02:49:05 ]
>>406のは
希望をこめて絵を修正してるって書いてあるやん

411 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 03:21:23 ]
>>408
そこまで知りたいなら金だせよ

412 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 10:46:29 ]
>>408
自分で答え書いてるじゃん。
深度バッファやマテリアルの境界を輪郭検出のアルゴリズムで線を引けばいい。
その場合1ドットのラインしか引けないわけだが、
1ドットのラインを別のバッファに書いてそのバッファを上下左右にずらして
もう1度書くと太くなるというのはわかるかい?

413 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:09:08 ]
>>412
もちろんその手の「太くする」方法はわかりますが、
深度バッファ法はちょっとひいったアゴのような、深度差が浅い部分に輪郭線が出ません
マテリアル法でも同様です。

モデルをちょっと太らせて裏返す法や、406のURL先のものほど「正確な」ものはなかなかありません。

414 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:42:40 ]
内積が正か負で判断して線引く>>406のをシェーダでかけば同等の正確さじゃないの?

415 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:57:07 ]
○輪郭線アルゴリズム
確かに>>406のものが
最も正確でキレイに作れそうなので、
>>406を主にすべきだな。

○ジオメトリ操作は、なるべくGPUでやりたい。
1パス目:D3DFILL_SOLIDで描画
2パス目:D3DFILL_WIREFRAMEで描画

この2パス目を、先のアルゴリズムで
輪郭線のみ描かれるようにすればいいんじゃないの。

○線の太さは任意に変更したい。
これは、2パス目を>>412の方法で太くすればいいんじゃないの。

416 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:00:03 ]
>2パス目:D3DFILL_WIREFRAMEで描画
>
>この2パス目を、先のアルゴリズムで
>輪郭線のみ描かれるようにすればいいんじゃないの。
書いてから気付いたけど、これはちょっと難しいかなぁ


417 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:03:56 ]
>>414
頂点シェーダで線を引くことはできないと思いますけど…

>>415
その方法ですと、やはりアゴなどに輪郭線を出すことができませんよね。



418 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:05:38 ]
>>406のものと同等の正確さというのはかなり難しいなぁ…
GPUを使ったものは、やはり速さ優先で作られてるし

419 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:07:33 ]
うるせえ!!!

420 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:26:00 ]
「自在な太さ」というのが>>406だと結構難しいはずなので(あと処理がキツイだろこれ)
結局のところ割り増しモデルを裏返し手法に落ちついちゃうんだよなぁ。
精度は落ちるけど、押し出す頂点位置を距離によらず一定になるように頂点シェーダで
調整すればそれなりの見栄えにはなる。

421 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:31:03 ]
>>420
I3DXLine使えば太さは楽勝じゃね?
頂点データをもとに自前で線引いてるんだから

422 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:46:00 ]
>>421
使ったことないので知らんが、あれでは太くなったら普通に線の一部が元モデルにめり込むか、
Z値を考慮せずに描画されるならなおさらこの手法には使えないのでは?

一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
それ以上の太さになるとポリラインで表現することになり、そうなればどこまで線のZ値を前に押し出せば
元のモデルと重ならずに描画できるかは簡単には見積もれないはずだ。

423 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:25:17 ]
>>422
ああ、ごめん。モデル側にめり込むのはご法度って考えだったのね。
俺は太さ3までだったら、モデルに1ドットめり込むだけだから別にいいやって思ってたもんで

>一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
よかったらこのあたり、詳しく解説してくれないか


424 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:38:11 ]
法線方向にプッシュして裏返すのって、特許取ってなかったっけ?

425 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:26:54 ]
ちょっとD3DFILL_WIREFRAMEが話題にあがったから試してみたんだが
D3DFILL_WIREFRAMEにしてもD3DFILL_SOLIDと描画時間が一緒だったんだが…
何かの間違いだろうか?
PixelShaderの呼び出し回数が段違いだと思うのに…

426 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:46:10 ]
なら頂点シェーダーかCPUがボトルネックなんだろ。
たいした量描画してるわけじゃないなら大抵CPUがネック。

427 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:51:10 ]
質問です

今、PixelShaderを使う描画を学んでおり、自分のメインPCでは正しく動作しました。
試しにと、PixelShaderに対応していない(1.0にすら対応していない)古いサブマシンに持っていって動かしたところ、正しく動いてしまいました。
ここで疑問なのですが、何故正しく動いてしまったのでしょうか?

どうやら
PixelShader = compile ps_1_1 PS();
と書いた部分が、メインPCだと正しく適用されるが、サブPCだと無視され固定パイプライン(という呼び方でOK?)のPixelShaderにより描画されているっぽいです。

これはHLSLの仕様なのでしょうか?
てっきりHLSLのコンパイルエラーとなり、fxファイルのロードに失敗するかとふんでいたのですが…




428 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:53:26 ]
補足です。

>ここで疑問なのですが、何故正しく動いてしまったのでしょうか?
の時点では、書いていたPixelShaderが固定パイプラインのそれと同等だったため「正しく動いているように見えた」のです。
ためしにPS()内で必ず「黒」を返すようにしたところ
・メインPCでは正しく黒を
・サブPCでは通常通りの描画を
したため「サブPCではPS()が無視され、固定バイプラインのPixelShaderが呼ばれている」と判断したのです。

429 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:55:50 ]
>>426
どうやらボーンによる頂点変換(ソフトウェア処理)がボトルネックだったっぽ
すまん

430 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:36:13 ]
確かに俺の環境も
PS2.0世代のGPUのくせに
PS3.0コンパイルのShaderが
HWで動いているな。
多分これは、PS2.0に対応とか3.0に対応ではなく
2.0、3.0で追加された機能に対応しているという話だろう。
ただアンタの言うPSの代わりに固定機能が動くというのはないな。
勘違いだろ。

431 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:16:43 ]
対応してなくても動作はするけど
対応してないPCじゃコンパイルはできないよね
あとピクセルシェーダーの動作って
コンパイルしたマシン(のGPU?)に依存してる?
家のPCでテストした実行ファイルを仕事場のPCで動かすと
家のPCと同じ動作するけど
コンパイルしなおすと動作が変わったりする

432 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:29:40 ]
>>430
お返事ありがとうございます。

>ただアンタの言うPSの代わりに固定機能が動くというのはないな。
うーん、どういじっても
PixelShader = compile ps_1_1 PS();
の PS()の中身は無視されてしまいます。

float4 f = {1.0f, 1.0f, 1.0f, 1.0f}
return f;

という単純なPS()の中身ですら、メインPCだと正しく真っ白になり、
サブPCだとPixelShader = compile ps_1_1 PS();の宣言がないがごとく振舞います。

エフェクトは
D3DXCreateEffectFromFile
でロードしています。

433 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:34:51 ]
D3DXが気を利かせてくれてるのかねぇ・・?
PS非対応環境なんてもはや持ってないから、アドバイスできん。すまん

434 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:39:42 ]
なんもエラー出てないの?

435 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:10:21 ]
何もエラーでないですね…。
ただ、ReleaseビルドのEXEファイル生実行ですので、次はサブPCのVC6.0上でDebug実行し、D3DXのログ出力を見てみます。
家に帰るのは夜です

正直質問した時は、あっさり
「PSが無い環境では、compile ps_1_1 PS(); って記述は無視されて、固定パイプラインとして実行されるよ」
とかくるかと思っていたのですが…

436 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:44:35 ]
435です。
やはり特にエラーメッセージもなく、単にスルーされているだけっぽい動作です。
どなたか心当たりあるかたいらっしゃいませんかー?

仮説
PixelShader = compile ps_1_1 PS();
などは、動作環境のサポートバージョンが、コンパイル指定したバージョン未満の場合は
(エラーを出さず)変わりに固定パイプラインを呼び出す

437 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:55:38 ]
>>436
はじめにサポートバージョンってわからないっけ?CAPSで
つか、何がしたいんだっけ?



438 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:35:14 ]
>>436
それ固定昨日と頂点定義が一致してないとランタイムで死ぬだろ

439 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 09:47:00 ]
>>437
やりたいことというより、こういう動作をするものなの?という疑問を解決するのが目的ですね。
CAPSでシェーダのバージョンはとれるので、意図しない動作を起こさないようにバージョンではじくことは可能ですね。

>>438
ちょっといまいちわかりませんが、頂点シェーダでの出力定義が「(固定パイプライン的に)普通」じゃないとランタイムエラーになるということでしょうか?
そもそも頂点シェーダでは「普通」じゃない出力はできないと思っていましたが違うのでしょうか?
(だから計算結果とかを、使ってないテクスチャーUVの中に入れるとかでごまかして渡す)
とりあえず、そんなことをしている場合は描画がしっちゃかめっちゃかになりそうですね。

440 名前:788 [2008/05/13(火) 17:48:16 ]
directXのAppwizardってVC++6の時代のものですか?
UPdate Summer2003(v9.0b)では,CD3DApplicationという汎用クラスが
あったのに最新バージョンではなくなっています.
その代わり,DXUTというフレームワークがふんだんに使われています.

directXのバージョンによってプログラミングテクニックがころころ変化して
いるように見えるんですけど(1〜2年前の参考書が最新バージョンと大きく
食い違っている),いったいどのバージョンを勉強したらお得なんでしょうか?
小生,これからdirectXを勉強しようというものです.

やっぱり,最新バージョンでSDKを使ってシコシコ書くのがベストでしょうか?
MFCのdaialogベースでdirectxを使ってみたいのですが.

あと,DXUTを解説している本やサイト(英語でも可)があったら教えてください.


441 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:29:35 ]
ttp://www.kohgakusha.co.jp/books/detail/978-4-7775-1272-0
これとかか?

ただし、DXUTの仕様はSDKのバージョンごとに変わってたりするんで
そのまま使えるかどうかはしらね

442 名前:デフォルトの名無しさん [2008/05/13(火) 19:48:34 ]
>>441

ありがとうございます。早速、購入してみます。

443 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:05:47 ]
ID3DXLineって便利だけど
遅いの?

444 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:29:46 ]
>>439
例えば、自分が固定パイプラインと同じ機能をシェーダ使って実装するとしてどうなる?って話じゃねぇの

445 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:19:22 ]
シェーダの質問なのですが、
D3DFMT_R16FやD3DFMT_A8のように4要素のないテクスチャで
float4でtex2Dを取得した場合zやwはどんな値になるのでしょうか?
不定なのか、0が入るのか、前の値が保持されたままなのか、など教えていただけると助かります。

446 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:14:53 ]
ドキュメントくらいはちゃんと嫁。
float4(0, 0, 0, 1)に対して渡された要素が上書きされるイメージ。

447 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:28:16 ]
>>446
ありがとうございます。
ドキュメントの探し方が甘かったようです。申し訳ありません。



448 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:07:18 ]
www.geocities.co.jp/SiliconValley-Oakland/9582/GamePrg/JoyTest.lzh
のexeを実行するとちゃんと動くんだけど、ソースをVC++2008で、コンパイルするとうまく動かない。

どうも、lpDIJoyDev->QueryInterface でfalseが返ってるみたいだけど、どこ修正すればよい?



449 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:39:30 ]
>>448
PCに入ってるSDKのバージョンがそのソースの想定したSDKの
バージョンとあってないとコンパイルできないよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef