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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2013/06/01(土) 00:56:31.97 ]
回答する人も、質問する人も必ず読んでください

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

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

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

>>2リンク

321 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 21:52:09.54 ]
D3DXCreateTextureFromFileEx()
が返したテクスチャのサイズって必ず正方形?
正方形以外のテクスチャをサポートするデバイスではどうなるのさ
というかテクスチャサイズを動的に知る方法教えて下さいお願いします

322 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 23:17:53.99 ]
>>321
前世紀のVGAならともかく正方形限定ってことはないはずだが…
サイズ指定がD3DX_DEFAULTまかせだと二の乗数に丸められるからそれじゃねえの(ex. 500x260 -> 512x512)

基本はサイズを画像ファイルから取得して直接指定するか
テクスチャサイズは丸めにまかせてUV座標で描写時に調整する(必ずD3DX_FILTER_NONEを指定すること)

あと、テクスチャは動的にサイズの変更はされないからGetLevelDescで十分なはずだぞ?
画像ファイルの実際のサイズならD3DXGetImageInfoFromFile
実行されるシステムのサポートできるテクスチャサイズを知りたいならD3DXCheckTextureRequirementsが楽っちゃ楽

323 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 23:26:46.16 ]
>>322
GetLevelDesc()
これや!こんなんあったんか!見落としてた!
ありがとう!
いや、画像読み込んで開いてサイズ取得してまた開かせるのが気に入らなくてな
とにかく解決した!ありがとう!

324 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 22:11:36.65 ]
DirectX11で登場した構造化バッファの「構造化」ってどういう意味??

325 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 22:23:02.77 ]
StructuredBufferのことけ?
構造体みたいに使える書ける、ぐらいに受け取っていたけど

326 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 22:27:40.73 ]
即レスd。

自分も構造体のことかなぁ、と思ったんだけど、
RGBAデータもまぁ、構造体みたいなもんだしなぁ・・・。
まぁ、RGBAやXYZWに限らず、任意の構造体を扱えるようになった=より一般化した、
という意味でそう名付けたのなら分からなくもないんだけど。

何か他の意味があるなら知りたいなぁ。

327 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 00:54:39.26 ]
RGBAやXYZWはGPUにとっては組込型であり基本型なのよ

328 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 07:08:24.81 ]
メモリーインタリーブでしょ

329 名前:325 mailto:sage [2014/01/07(火) 21:12:57.83 ]
>>327
だとすると、やっぱり任意の構造体の意ということだね。

>>328
??



330 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 01:47:02.85 ]
構造体メンバのアライメントを発展させたようなもんか

331 名前:デフォルトの名無しさん [2014/01/16(木) 10:49:02.29 ]
IDirect3DDevice9::SetTexture関数は重いので必要最低限だけ呼び出すべき と言うのをググっててよく見るのですが、
具体的に1フレームで呼び出しても影響のない回数はどのくらいでしょうか
目安でいいので教えてください

332 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 12:49:04.78 ]
>>331
msdn.microsoft.com/ja-jp/library/bb172234.aspx

他人に目安とか求めてもあまり意味の無い問題やな
自分自身のプログラムで許容される閾値を計測したまへ

333 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 23:21:01.62 ]
>>332
了解です
ありがとうございます

334 名前:デフォルトの名無しさん [2014/01/17(金) 23:50:26.72 ]
DirextX11使ってるんだけどエンディアン問題ってどうなってるんだろ?

DirextX側が処理してくれてるのか、自分で処理しなければいけないのか
そもそもリトルエンディアンしか考慮してないのか

335 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 07:41:46.84 ]
どのリソースの話をしているんだ?

336 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 16:33:41.40 ]
そんなこと気にする場面なんて皆無・・・

337 名前:334 [2014/01/18(土) 21:51:08.85 ]
ID3D11DeviceContextのUnmapを使ってCPUメモリ上のデータをGPUメモリに送るときに
エンディアンって大丈夫なのかなって感じです

Mapで割り当てられたメモリに値をコピーするときに
自分でリトルエンディアンの配置にしないといけないのか、それとも気にせずmemcpyなどでコピーしてしまっていいのか
そんな感じのことで悩んでます

338 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 22:10:36.27 ]
>>337
馬鹿なんだな
自分が扱ってるデータについてよく考えろ

339 名前:デフォルトの名無しさん mailto:sage [2014/01/18(土) 22:24:21.46 ]
逆ならまだしも、337の書き方から察するにGPU側はリトルエンディアンだと
思っているなら何を気にしているのだろう
エンディアン問題って言いたかっただけちゃうんかと…



340 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 01:58:50.38 ]
どんな状況を想定してるのかよくわからんな
そもそもWindows PhoneやWindows RTもCPU側はリトルエンディアンだし
Direct3Dを使う上では杞憂としか思えんが

341 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 03:40:32.50 ]
ビッグエンディアンのXBox360も9世代だしなー

342 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 15:32:02.18 ]
XBox360ってインテルじゃなかったのか 初めて知ったわ
XenonとXeon間違えてさらに混乱したわw

343 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 15:44:05.40 ]
ははw
たしかに名前は似てるなw

344 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 17:47:43.20 ]
しかしアプリを作るうえでエンディアンを意識するケースなんてあるんだろうか
まあデバッグではバイナリ列見たりあるんだろうけど。

345 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 17:54:35.22 ]
具体的に何のデータを扱っているときに何が心配なのかを明確にしないと全く意味が無い。
幽霊が出るかもしれない怖いっていわれたところで、だからどうしろと?

具体的な話にまとめられない時点で、はっきり言って適性が無いからプログラムなどやめた方がいい。

346 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 19:07:46.05 ]
Q.エンディアン気にする必要ありますか?

A.いいえありません

でいいだろ。初心者質問スレですよここは
人の進む道にまで口出すなよ。面倒くさい奴だな

347 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 19:09:48.69 ]
昔は3Dの色々な技術も含めて質問や議論が盛んだったけど、
最近はすっかり寂れちまったね・・・。

348 名前:デフォルトの名無しさん mailto:sage [2014/01/19(日) 20:49:19.72 ]
>>344
あるに決まってるだろ
360のモデルデータをぶっこ抜いて表示するのに変換したわ

349 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 11:41:47.71 ]
DX11の質問おなしゃす
UpdateSubresource等でVRAMを書き換えを実行した直後に
その結果をMapで取得するのはどうしたらいいんでしょうか?

そのまま実行した時はGPUコマンドが実行されていないのか
古い値が取得されてしまいます
FlushやQUERY_EVENTを確認してみたものの即時値をとれないので困っています



350 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 12:41:55.44 ]
Flushでもダメなのか・・・。
もうDrawコールするしかないんじゃね?

351 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 16:07:23.69 ]
意図がわからんな・・・
UpdateSubresourceでデータを渡してるなら。その渡したデータこそが取得したいデータだろう
ちゃんと書き換えられているか知りたいとかなのか?

352 名前:349 mailto:sage [2014/01/25(土) 17:52:02.45 ]
>>350
Drawは表示する物がないので試してみてないですが
Dispatch、Presentも試してみても駄目で
sleepで一秒ぐらい待てば思った通りの挙動にるんですが、さすがに実用に問題があるので

>>351
目的はコンピュートシェーダの結果を取得したく
UpdateSubresource(バッファのリセット)

CSでバッファ書き換え

Map(バッファのメインメモリ上への取得)
この流れを作成したく、CSを実行しなくても正常な値が取れなかったので
質問からCSの処理を省きました

353 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:10:46.33 ]
まさかとは思うがUSAGE_DEFAULTで作ったリソースを読むなんて馬鹿なことはしていないよな?
聞くだけばかばかしいことだとは思うが。

354 名前:349 mailto:sage [2014/01/25(土) 18:40:50.44 ]
>>353
Default→Stagingに複製してからMapしてます
書き換えてから数フレーム待ったり、Map前にSleepして待った後
結果が取得出来るのは確認しています
即時に結果を取得が出来なくて困ってます

GPUとCPUの同期のズレが原因かと目星をつけて
同期するような処理を挟んでみても上手くいかずお手上げな感じです

355 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 18:48:44.95 ]
GetDataで出力が完了しているのかは確認した?

356 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 19:31:31.62 ]
そういや、コンピュートでうまく実行されなくて悩んだことあったな・・・俺も

Dispatchした後に以下のコードを追加して試してみたらどうだ?

ID3D11DeviceContext->CSSetUnorderedAccessViews( 0, 0, NULL, NULL );
ID3D11DeviceContext->CSSetShaderResources( 0, 0, NULL );
ID3D11DeviceContext->CSSetConstantBuffers( 0, 0, NULL );
ID3D11DeviceContext->CSSetShader( NULL, NULL, 0 );

357 名前:349 mailto:sage [2014/01/25(土) 19:55:42.14 ]
解決しました
Unmapしてなかったっていうアホな理由でした
そのせいで値がふわふわ変化して怪しい挙動していたみたいです
助力ありがとうございました

なぜかUnmapしなくていいっていう謎の思い込みがあったのが原因です
Dx9時代はちゃんとUnLockしてたのに、、

358 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 20:01:50.18 ]
・・・ねぇわ

359 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 20:07:04.36 ]
ちょwww

まぁ、よかったけどw



360 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 23:37:39.21 ]
まぁ、何事も経験ではあるが、ここで聞く前に解決できる間抜けな失敗だよな
阿保杉ワロタ

361 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 08:55:34.88 ]
つまりここに居るのは「ここで聞く前に解決できる間抜けな失敗」すら解決出来ない人達なのか悲しいな
まぁ、経験がなければ回答できないから仕方ない
むしろUnmapしなくてもそれっぽく動作しちゃうのが驚きだ

362 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 10:11:12.97 ]
game.watch.impress.co.jp/img/gmw/docs/586/729/gra_55.jpg
game.watch.impress.co.jp/img/gmw/docs/586/729/gra_56.jpg

こんなふうに、GPU処理の内訳を知りたいんですが、
どうすればイイですか?
VisualStudio2012、Direct3D11です。

363 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 15:23:29.10 ]
内訳とだけ言われてもな・・・
処理時間を測定したいならtimeGetTimeかQueryPerformanceCounteで自前で実装してリスト化すればいい

364 名前:362 mailto:sage [2014/01/26(日) 15:50:58.28 ]
>>363
あ、CPUの時間計測でできるんですか。
ありがとうございました。

365 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 09:29:24.37 ]
>>362
この画面ってNSightだと思う
おれはCudaでしか使ったことないけど

366 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 10:21:37.59 ]
graphics.stanford.edu/~mdfisher/GPUView.html

Windows SDK 7の頃ならGPUViewっての入ってたんだがなー
Visual Studio 2012以降だと既定じゃSDKの中に見当たらん
ぐぐってみたらスタンドアロン版Windows SDK 8の中にあるらしいが、めんどいので確認してない

367 名前:デフォルトの名無しさん [2014/01/27(月) 14:03:54.68 ]
マップ間移動をしたときにマップの配列に移動先のマップ情報を読み込ませたいのですが、
本来なら控えるgoto文をつかって
int WINAPI WinMain(略){
   DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );

_FirstLoad :
      /*   初回に必要な読み込み   */
   goto _GAMELOOP;
_Load :
      /*   読み込み   */
      if(読み込みが完了したら){
         goto _GAMELOOP;
      }
      else{
       /* 読み込みが失敗したときの処理*/
      }
_GAMELOOP :
      while(条件(略)){
         if(プレイヤーが別のマップに移動したら){
            goto _Load;
         }
      }
      DxLib_End();
      return 0;
}  
などとしても、大丈夫でしょうか?

368 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:07:54.00 ]
馬鹿には無理

369 名前:デフォルトの名無しさん [2014/01/27(月) 14:10:01.32 ]
>>368
一気にロードしても良いのですがメモリを食うので
随時配列にロードする形をとりたいのですが

具体的な回答を希望します



370 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:18:57.33 ]
当人がgoto文使わないと随時配列にロードできないって言うんならそれでいいんじゃね

371 名前:デフォルトの名無しさん [2014/01/27(月) 14:23:08.33 ]
>>370
やはり、ループの中で処理を済ませてしまった方が良いでしょうか

372 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:26:28.00 ]
本来なら控えるgoto文を使ってまでやりたい理由があるんでしょ?
なら使えば良いしないならやめとけば

373 名前:デフォルトの名無しさん [2014/01/27(月) 14:30:34.89 ]
>>372
ふと思いついたので...
不安要素の方が大きかったので質問させてもらいました

無理に使う事も無いので方針的にはやめとく方にしますが、参考意見が聞きたかったので

374 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:31:30.87 ]
別に絶対gotoを使うな!なんて話はないぞ
あれも一種の宗教だ

375 名前:デフォルトの名無しさん [2014/01/27(月) 14:38:12.38 ]
>>374
まさに 毒にも薬にもなりますからね
上手に使えればいいのですが

376 名前:デフォルトの名無しさん [2014/01/27(月) 14:45:56.59 ]
別のパソコンで実行しようとしたらD3DX9_42.DLLがないと言われた
このパソコンにインストールできる権限はない
コンパイルしたパソコンにわざわざ古いDirectXSDKを入れてコンパイルしなおすのもダルい
他に解決方法は?

377 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:46:01.97 ]
せめて前方移動と後方移動でキーワードが分かれていれば
ずっとマシな評価だったのではないか

378 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 15:28:34.15 ]
>>376
SDKのRedistフォルダにファイルあるから実行ファイルと同じパスに置けば動くよ
ただ、そのファイルは再配布用インストーラを通して入れないというルールがあるので(DirectSetupで調べて)
運用は自己責任でな

379 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 18:36:36.90 ]
そういや、PCを自己責任で使うのって、わりと当たり前じゃね?



380 名前:362 mailto:sage [2014/01/27(月) 23:06:54.60 ]
>>365
>>362の画像はPSVitaの開発関連のものなのですが、
NSightはNVidia以外でも使えたりするんでしょうか?
まぁ、使えなかったとしても、NSight的なものがあるんでしょうね。

>>366
ありがとうございます。
MicrosoftはVisualStudioにこの機能を統合してほしいですね。

381 名前:デフォルトの名無しさん [2014/02/11(火) 16:13:20.60 ]
今MMDのPMXビューワを作っていて、頂点モーフィングを実装したいんだが、
どう作れば良いかアドバイス頂戴。
例えばPMXの亜北ネルは頂点数10399のモデルだが、
モデルに含まれている頂点モーフパッケージは、
どれも高々200頂点程度しか移動させない。

10399頂点のモデルの高々200頂点をモーフィングさせる為のシェーダは
どういう設計で組めば効率が良いだろうか?

382 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 16:59:55.26 ]
>>381
面積が10399以上のfloat4テクスチャ作ってそれに移動量をモーフ数だけ加算してVSで足すとか

383 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 18:15:51.31 ]
>>381
微妙にモーフを理解してないような気がするんだが、気のせいか?

384 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 18:26:55.99 ]
メモリの効率よくいくにはこいつを使うしかない

コンピュートシェーダ「・・・興味があるならやり方を教えてやる(´・ω・`)」

385 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 19:20:47.81 ]
>>382
そうするなら、単純に移動量だけ収めた頂点バッファを作って
バインドした方が自然かも。1モーフ166KBか、
まずこの形で実装してみるのはありか。

>>383
端的に言うと、モーフ適用前メッシュと適用後メッシュを用意して
アルファ値でブレンドするのを頂点モーフィングだと思ってる。

>>384
CS・・

386 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 19:22:53.86 ]
テッセレーション係数って最大64なんだな。
地形表現のために、もっと分割したかったのに・・・。

387 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 23:20:02.31 ]
>>383
Dx9でも行ける(VTF使うけど)
モーフターゲット頂点の移動をテクスチャに1ドットずつ加算で打っていって
VertexShaderでそのテクスチャを読みつつ元の頂点に足せばモーフる
オフセットを記述したテクスチャじゃなくて最初の頂点位置入れても別にいいけども

>>385
テクスチャだと全部GPU処理にできそうだっていう提案なんでそっちでやるほうが色々良さそう
ポイントリストは意外と重いんだっけか

388 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 15:28:47.49 ]
VS2012でシェーダーファイルHLSLコンパイルできるようになってたけど
main無いって怒られる
DirectX11だからテクニック使わないの
PSとVSあるので設定も複数いるような気がするし
よくわからないです

VS2012+DirectX11は、
定番はどうしたらいいの?

389 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 15:38:56.11 ]
シェーダーの種類ってのがあってピクセルシェーダーとか指定できた。
一つのファイルでps,vs両方コンパイルしたい場合はどうしたらいいですか?



390 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 16:02:00.99 ]
D3DCompileFromFile使ってプログラム内でコンパイルすればいい

391 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 16:29:43.04 ]
それはわかっております。せっかくある機能を使いたかったん…
VSとPSでファイル分けるしかないのかな

392 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 23:44:56.35 ]
>>388
プロパティのHLSLコンパイラ-エントリポイント名をmainから
正しい名前に変えたらどうか?

>>391
コンパイル毎にエントリポイント名を変えればファイルを分ける必要はないだろ。
コンパイルは関数の数分やる必要があるけど。

または
VertexShader g_VS_main = CompileShader(vs_5_0, VS_main());
GeometryShader g_GS_main = CompileShader(gs_5_0, GS_main());
PixelShader g_PS_main = CompileShader(ps_5_0, PS_main());
これを入れてエフェクトIFで取り出す。

393 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 16:43:45.38 ]
>>392
VS2012登録でやるとコンパイルは1ファイル1関数(エントリポイント名)だけなんよ

MSのサンプルでは
test.fx( VSやPS入ってる。これはビルド除外 )
test_PS.hlsl( #include "test.fx" のみ記載で エントリポイントPS )
test_VS.hlsl( #include "test.fx" のみ記載で エントリポイントVS )
ってなってた

394 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 23:39:58.35 ]
HLSLをプロジェクトの設定でコンパイルは、俺も折角だから使おうと色々頑張ってみたけど使い勝手悪くて、
結局バッチとかスクリプト書いてコンパイルに戻しちゃったな。

395 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 16:51:31.04 ]
初歩的すぎてこんなこと聞くのも恥ずかしい事かもしれんけど質問させてくれ
シェーダに行列渡すとき転置するじゃない?あれってレジスタに列優先でバインドされるから
って理由だったと思うんだけど、じゃあシェーダ側でmulするときにベクトルを右辺にしたらいいんじゃないのか
って思うんだけどそれじゃダメなの?PC壊れててテスト出来ないんだけど気になってしょうがない
ネットで探してもそういうもんだで完結してるとこ多すぎて悶々とする
仮にmulで右辺にベクトルでも問題ないなら何故転置が必要ってのが当たり前なのかも気になる
昔は左辺掛けしか出来なかったとかそういう制限あったんだろうか

396 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 19:20:38.63 ]
右にベクトルで転置しなくても問題ないできるよ
計算が列ベクトルの方が早いとかなんとかだったような気がするが、理由は答えれるやつは少ないと思う。
書き方を統一する意味もあるんじゃないの?

397 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 21:01:37.63 ]
>>395
GL

398 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 21:16:55.28 ]
>>396
やっぱりそうなんだ、ありがとう
詳しい説明ってほとんどないよね、確かに列の方が早いってのは聞いたことあるような気がする
列優先でバインドされるからデータ取得が行優先より早いんだろうねきっと、微々たる差だろうけど
しっかし本とかネットでは転置するものとしか書かれてないんだよなぁ、そういうもんと納得してね(キリッ)みたいな

399 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 21:43:01.28 ]
おお、あれってmulの左右入替えだけでできたのか。
変換が入るとややこしくなるから、行優先のデータ形式で十分っぽいな。



400 名前:デフォルトの名無しさん [2014/02/23(日) 12:00:47.34 ]
テクスチャ用画像が半透明を含むかどうか(アルファが1.0以外あるか)
知りたい。
DirectXTexではScratchImage::IsAlphaAllOpaque()でわかるようだが、
DirectXTexではなくD3DX11を使用した場合、同等の機能はあるだろうか?

401 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:12:11.77 ]
一発でやってくれる関数っぽいのはなかった気がしたが
mapでテクスチャにアクセスして読み取れば簡単にわかるだろ

402 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:16:45.34 ]
>>398
アホな説明を鵜呑みにしないで、ちゃんと調べろ
msdn.microsoft.com/ja-jp/library/bb509634(VS.85).aspx
D3DXMATRIXはcolumn-major(行優先)な仕様だ

403 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 17:52:08.52 ]
行優先だからHLSLに送るとき列に転置させてるんだろ
何言っての???

404 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 18:02:57.26 ]
>>402
何いってるの?お前がまず先に文章ちゃんと読めよ
未だにD3DX 構造体使ってる時点で底が知れるけど

405 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 19:33:51.71 ]
>>396
ベクトルって4x1として扱われるんじゃないの? と思って調べたら

http://msdn.microsoft.com/ja-jp/library/ee418342(v=vs.85).aspx
>{
> float4 val;
> return mul(val,val); // dot(val, val)と同じ
>}
>この乗算結果は、1x4 * 4x1 = 1x1 ベクトルです。

状況に応じて4x1と1x4で解釈変えてくれるってことなのかな

406 名前:405 mailto:sage [2014/02/23(日) 19:35:54.52 ]
なんじゃこりゃ

msdn.microsoft.com/ja-jp/library/ee418342(v=vs.85).aspx
>{
> float4 val;
> return mul(val,val); // dot(val, val)と同じ
>}
>この乗算結果は、1x4 * 4x1 = 1x1 ベクトルです。

と書きたかった

407 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 23:29:21.78 ]
column-majorとは列優先のこと。
昔のSSEは内積命令がなかった為
ベクトルと行列の乗算には
列優先の方が効率が良かった。
今はどっちでもいい。

408 名前:デフォルトの名無しさん [2014/02/24(月) 23:42:19.43 ]
列優先はFORTRAN、C言語は行優先、それでDirectXも行優先にしたのでは?

ところでDirectX11も左手座標系を基準にしているの?
それと、DirectX9の行ベクトル*転置行列をやっぱり踏襲してるの?

409 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 00:33:47.75 ]
開発者が自分で決めることを、DirectX云々はとかいう意味が分からない。



410 名前:デフォルトの名無しさん [2014/02/25(火) 00:56:02.20 ]
開発者って誰なんだよ。DirectX使ってソフト作っている奴かよ。

お前はDirectX云々も知らんで、サンプルプログラム動かして
なんとなく納得している阿呆かよ

411 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 03:57:22.19 ]
>>410
Direct3Dの座標系は開発者が決められる
そんなことも知らない馬鹿は氏んでろよ

412 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 06:53:10.34 ]
だからといってX座標の変数にyと定義しないし、Y座標にxと定義しない。

413 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 07:05:46.11 ]
XとYなんてビューの設定を開発者が変更した時点で、いかようにも変化する。
自分で決めることであって、あらかじめ定まっていることじゃない。
座標系も自分で決定することであって、DirectXに依存するようなことじゃない。
そんな簡単なことも分かっていない時点で勉強不足。

414 名前:デフォルトの名無しさん [2014/02/25(火) 10:10:28.99 ]
>>413

突き詰めれば、左手系と右手系どっちなのかはプログラマの解釈の問題というのは
そうかもしれない。

しかし、数学では右手系が普通、DirectX9が左手系がデフォルトだったから、
正の回転方向が右手系と逆なのに初心者はとまどってしまう。

メッシュモデルの読み込み(メタセコイアでは左手系、右手系に切り替え
られるとお前は言うだろうが)やカーリングの問題もある。

それにD3DX9の算術関数は行ベクトル×転置行列になっている。数学では
行列×列ベクトルの演算が普通だから、この癖も知らないと初心者は混乱する。

だから、DirectX11はデフォルトで右手系になってるか、行列×列ベクトルに
なってるのかと聞いてるのに「そんなの自分で決められる」かよ。そして、
最後は「自分で調べろ」と言うんだろ?

お前みたいなのを融通のきかない、ピントはずれのボケナスと言うんだ。そして
職場で「テクハラ」をやって上司や同僚から嫌われてるだろ。

その程度のレスしかできないなら黙ってろ。おまえはどっかの掲示板の「あ」か?

415 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 12:40:59.49 ]
>>414
そもそも固定機能が無くなって頂点処理を自分で書かないといけないんだから
自分で書いたシェーダー次第。

416 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 13:52:00.00 ]
>>414
>しかし、数学では右手系が普通、DirectX9が左手系がデフォルトだったから、
いったい何を言っているんだ?
そもそもそんなデフォルトは存在しない。
お前は頭が悪すぎる上に、思い込みがひどすぎる。

417 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 13:55:43.87 ]
なんでDirectX9が左手なんて勝手に思い込んじゃったんだろう?
馬鹿の考えることは常人には理解できない。

418 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 17:44:31.59 ]
左手だから思い込みじゃなくて確信だろう。

419 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 20:23:54.24 ]
ん?でもHLSLの組み込み関数は左手なんだから、そちらに合わせたほうがシンプルで良くね?
crossとか使ったことない?



420 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 20:57:32.67 ]
そもそもDirect3DもOpenGLも、同じ行列をセットして、
同じ頂点座標を描画すれば、同じ出力結果になるんだよ。

RM時代のX-Fileが左手でデータを格納していたから、
左手でやっているサンプルが多いと言うだけの話。
D3DXにべったり頼っている人間が、
疑いもせずそういうものだと思い込んでいる。

421 名前:デフォルトの名無しさん mailto:sage [2014/02/25(火) 21:02:04.13 ]
hlslとglslなら、APIが違うから呼び出すまでの手続きは違えど、計算部分は完全に同じ内容になる。
両対応のプログラムを実際に作っているが、座標系の変換なんて意味不明な作業はしていない。






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

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

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