【C++】 DirectX初心者質問スレ Part40 【C】©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前
【C++】 DirectX初心者質問スレ Part39 【C】
http://echo.2ch.net/test/read.cgi/tech/1418438785/
>>2リンク なるほど、とりあえず1にしたわ
ちなみにBufferCountを2にしてバックバッファを1枚取り出す場合でも普通に動いてた
presentを非同期処理っていうのはpresent(0, 0)での呼び出しかな?
今はpresent(1, 0)で呼び出してる >>791
英語で表示して、Google翻訳にかけた方がずっとましな日本語なる。
ただし、サイト全体を翻訳にかけると中身違うのか駄目。 MSDNのサイトは、もう死んでるような。
HLSLのリファレンスみると、もう英文ですら何も書いてない。
ヘッダーファイルを読んだ方がマシなレベル >>792
(100〜120fpsを割った頃にまた来てね?) MSDNとTechNetは捨てて、docs.microsoft.comに移行するらしいし。 まあ、HLSLのリファレンスは、英文よりも数式、計算式を書いてくれた方が有り難い。 >>796
そうなんだ。
何度も移転しているから、あんまどうでもいいが、取り敢えず、英文でよいから充実させてくれ。。。
dot(x, y)
Returns the dot product of two vectors.
…その通りなんだが、知りたいのは、そこじゃない、と。
「cos(θ)」の一文の方がまだマシ。
これが数式で表されていたら、かなり印象が違う。 保守としてドキュメントのスナップショットが必要なんだけどなぁ。
昔のようにパックしたMSDNライブラリを定期的に提供してくれないと。 なんだ。結構いるんだな。 過疎だから来週までコメント付かないと思ったのに…
「cos(θ) = dot(x, y); ではない」という指摘は巧く呑み込めないが、
説明文 1) cos(θ) = dot(x, y);
説明文 2) Returns the dot product of two vectors.
説明分 3) retirm = |x| |y| cos θ
説明文 4) とりま、おまえらレベルだとベクトルの近しさを計算するだけなんで、ざっくりベクトルの近似を指数で返してやんよ。 0.0〜+1.0だけ使って、あとは勝手にクランプしろ。 黙って使え
の場合、どれがいい?みたいな表現(=プログラマ エクスペリエンス)の議論かな ああ、太刀持ちバルバトスとリックUは同盟戦コンテナ報酬か
どうせ出ないけど dot(a,b) -> a.x*b.x + a.y*b.y + a.z*b.z … "dot" ってのは
a・b
↑ この鼻くそ記号のことだぞ
ちなみに "cross" は
a×b
↑ このバッテンな dot(a,b) = |a||b|cosθ = a.x*b.x+a.y*b.y+a.z*b.z+…
いくつか利用例も書いてくれると嬉しいけど
ドキュメント作成者が過労死しかねない >>798
>dot(x, y)
>Returns the dot product of two vectors.
>…その通りなんだが、知りたいのは、そこじゃない、と。
add(x, y)
Returns the sum of two vectors.
これでも「知りたいのはそこじゃない」とか言うか? >>809
lerp(x,y,a)
観ると不信感を感じるけどな 左の一覧と詳細表示の右側が区分がないフラットデザインなのがむかつく。
そして、改善する気がないのに「Is This page helpful?」って聞いてくるのがうざい。 最近、深層学習(語感がカッコいい)の本を眺め始めた。
今読んでいる本の事例だとザッくり描画パイプラインのベクトルと深層学習のベクトルは別物だな、と感じた。
前者は4成分のベクトルだが、深層学習のベクトルはアホみたいな次元(たぶん、シェーダでいう成分の意味)を使うそうな。
つまり、ベクトルというよりもベクターな印象。 >>814
意味が違っても数学的には同じことなら道具として利用可能 >>814
DirectXの出番はありそう?
DirectCompute使えるかな? ざっくり、成分数が全く違う。
認識を入れ換えないとダメっぽい
「頂点配列を成分」とみたて
「4成分レジスタ」を「32bitx1成分レジスタ」と扱う。
こんなことをするみたい。
まだ確度が低いから参考程度に。
計算シェーダは使えるが、性能だすなら頂点やピクセルシェーダと似た認識でコーティングする観点は忘れちゃダメ。
おれ最近、俺の配色、グラフィックスデザイン、紋様なんかの幾何学的な美しさを発想する感性に哭きたくなるようなセンスのなさを実感したから、深層学習に生きるわ。
みんな駄文に寛容でいてくれて、ありがとうね! 駄文にも程があるだろ……
最低限ゼロから作るDeep Learningでも読破してから高説垂れれば良いのに 突き放すのもなんだからと、俺が知ってる中で一番馬鹿でも読めそうなの書いといてやったのに。
人の親切になんてこと言うんだ ニューラルネットを関数近似と捉えて、構文解析や単語の関係評価をそれぞれ別々のニューラルネットと構成する事で、従来のやり方に近いことが出来るニューラルネットが実現出来たということが書いてあった。
かなり刺激的。
適切なタスク設定と損失関数選定が肝だろうが、これは面白い そんな本を読むより、まずはスレ違いな落書きを垂れ流さないという常識から身につけようか。 FBX SDKってスレッドセーフじゃないんですね・・ >>829
おまえが現状を認識してないアホなだけやんw 特定分野のAPIと言語を比べてるあたり知識以前に知能が足りて無さそう 何か面白い話題は無い訳?
みんなでさぁー盛り上げていかないとさぁー
分かってるわけえー?
頼むよまったくさぁー!?
俺?俺は別に無いけど OpenCV使わないでDirectXだけでカメラからの動画をキャプチャーする方法を教えてください >>836
ググれない馬鹿にはどうせ理解できないよ スレタイ読んでからこのスレ頭から読むとひでぇな
偉そうなのがずっと文句言うだけのスレという
そら廃れますわ、まぁおかしいのが一人、ずっと常駐しているだけかもしれないが >>836
答:MediaFoundation
メディアGUIDハードコーディング 愚痴だがWindowsのカメラフレームワークは、なんであんなに使いにくのか。
デバイスから取り出した映像と音源のストリームをそのまま寄越せといいたい。 Media Foundationが「DirectXのみ」に当てはまるかはびみょんなところね すいません教えてください。D3DX11CreateShaderResourceViewFromMemoryを使って、テクスチャの画像更新をしているんですが遅いんです。
FPSは1桁台になっています。テクスチャのサイズは1024×1024です。他で高速に処理できる方法を教えてください。よろしくお願いします。 予め画像を全部GPUに送り込む
画像の中味をCPUで触るのならば、定数バッファでレバ利かせる。 目的にもよるがCPUからのテクスチャ更新は基本的にUpdateSubresourceだぞ >>847 了解しました。UpdateSubresourceを調べてみます。 >>846
お前さ、
自分の回答がズレズレなのわかってる?それがわからないなら
迷惑だから答えるのやめろよ 色々なわけがあって、dx9で個人制作のゲーム作ってるんだけど、dx9の作品でゲーム業界行けるかねぇ
unity,ueのが断然良いってのはわかってるんだけどさー >>854
DX9で何をするかが大事。
APIはそれほど重要ではない。 vista以降DirectSoundの中はソフトウェアでやってるって聞いたけど回避策はないのかなあ ソフトウェアでなんか困るのけ?
レイテンシをタイトに突き詰めたいとかならWASAPIで自前で頑張るしかないんじゃね 自分で作るならそうなんだけど
他人のソフトだとそうもいかないしなあ オフラインで問題ないソフトなら、昔のハードを用意すりゃいい OSの仕組み上厳しいでしょ
SBのアルケミーみたいな仕組みでもないと WASAPIネタで便乗
排他モードで複数ソースを同時発音するには
自力でミキシングするしかない、という理解で正しい?
ていうかスレチ? サウンドカードが一個ならたぶん排他モードで専有しちゃうと思う
2つあれば1つを共有モード
1つを排他モードとかできるかもしれない
やってみないと
普通に作り混んでるとハードウェア列挙したりAPI選べるから行けそう なるほどー、たしかに複数デバイス使っての同時発音なら
出来そうだけど流石にニッチすぎるかな?w
自分はおとなしく共有モード使っときます・・・ 質問です。
DirectInputでゲームパッドをEnumDevicesしたのですが
引数をDIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK にすると
上手く取得できません。
引数をDIEDFL_ATTACHEDONLY のみにすると上手く取得できます。
という事はこれは自分が使ってるゲームパッドのフォースフードバック機能を
DirectInputから認識できないという事になるでしょうか?
パッドはEDGE301というものです。 そもそもEDGE301がDirectInput非対応のようだけど DirectShow/Media Foundation/Windows.Media.Captureだな
もちろんスレ違い >>865
そうなんですか?
DIEDFL_ATTACHEDONLYにすれば一応取得できて
方向キーと一部のボタンだけの情報はDirectInputから取得もできました。
XInputの方も試しましたが、どうしてもLT,RTの情報が取得できません…
XINPUT_GAMEPAD 構造体のbLeftTrigger, bRightTriggerも変化なく
ボタンの、XINPUT_GAMEPAD_LEFT_THUMB, XINPUT_GAMEPAD_RIGHT_THUMBも変化無しでした。
LB,RBの方はボタンのXINPUT_GAMEPAD_LEFT_SHOULDER, XINPUT_GAMEPAD_RIGHT_SHOULDERで取得できるのですが…
LT,RTの取得は無理なんでしょうか。 すいません。自分の勘違いでした。
XInputからはbLeftTrigger, bRightTriggerの値で取得できました。
お騒がせしました。 directxsdkのサンプルあるだろう
あれの結果はどうなのよ やはりこのパッドのフォースフィードバックの機能は
DirectInputからは見えないようです。
どのコードを動かしてもDIEDFL_FORCEFEEDBACKを指定すると
EnumDevicesでこけます。
という事で大人しくDInputから動かそうと思います。 × DInputから動かそうと思います。
〇 XInputから動かそうと思います。
お騒がせしました。 今ってXInput非対応のゲームコントローラどのくらい残ってるんだろう。
もう無視してよいくらいのレベルの話?
市販ゲームだとXInputのみ対応って結構あるよね。 >>875
Amazonとかではまだまだ売ってるよ。アナログスティックの無いシンプルなやつとかね
でも昔と比べると減った(XInput対応が増えた)から、
キーボードに対応してればゲームパッドはXInputのみ、でも問題ないかと >>861
たぶん正しい。
問題の根底にあるのは、
・ソースのサンプリング周波数のバリエーション
・再生デバイスの再生周波数
当たり前だが、再生周波数は一つを選択する必要
つまりリサンプリングは避けて通れず、リサンプリングするならば、ボリュームやイコライザーもソフトウェア処理する方が多様性(みんな大好き♥ダイバシティ)が増すので応用なら好ましい。 なんかカメラの質問に人気があるのね
カメラで盗撮したいなら、Linuxのが簡単だと思うの >>877
と、思いきや
基本的にWASAPIは共有モードでもサンプリングレートの変換は自前でするもの
デバイスの共有モードのサンプリングレートと再生したいソースのレートが合ってない場合は
自前で変換してから渡すのが普通
IAudioClockAdjustmentもあるけど音が悪いのと対応してないサンプリングレートもあるので >>879
IAudioClockAdjustmentは微妙なクロックのずれを補正するためのもので、所謂サンプリングレート変換は想定外だよ。
共有モードで良いなら、XAudio2でも使えば良いんじゃないかな。 Windowsの機能でサンプリングレート変換するなら、Media FoundationのResampler MFT
XAudio2のサンプリングレート変換は音が悪かったはず DirectSound.dllそのもののソースコードって公開されてないのかしら DirectSoundなんですが
DSBUFFERDESC::dwFlagsにDSBCAPS_CTRLFXを加えると
IDirectSound8::CreateSoundBuffer()でINVALIDPARAMが返ってきて失敗します…
DSBCAPS_CTRLFXは指定できないのでしょうか?
DirectSoundCreate8()のところで指定するデバイスのミスとかでしょうか…?
一応、DSBCAPS_CTRLFXを外せば普通に動きます。 面白い現象に出くわした。
Intel内蔵グラフィックスとnVidia
環境がd3d11、x64、7
同じバイナリを使って深度バッファシャドウで影をだしたら、影のでき方が違う。
インテルだと右に影ができる。
nVidiaだと左右に影がでる。
射影行列かラスタライザの生成座標(z成分)か出力マージャが深度値を出す部分に機種依存する所があるみたい。
不思議… >>887
未だに同じコードで絵が違うとかあるんだなw >>886
GetDeviceCaps()は
IDirect3DとIDirect3DDeviceにしか無いみたいなのですが。
それからIDirectSound8とIDirectSoundBuffer8の方にはGetCaps()がありますが
IDirectSoundBuffer8::GetCaps()の方はバッファ作成時に指定したフラグが何かだけが取得できるようです(dwFlagsに指定したものがそのまま取得できるようです)。
IDirectSound8::GetCaps()の方にはエフェクト関係の能力値は無いような気がします。
どこで調べれば良いのでしょうか? 自己解決しました。
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFX;
このフラグ指定でいけました。
DSBCAPS_STATICとDSBCAPS_CTRLFREQUENCYとDSBCAPS_CTRLFXは同時指定できないみたいですね。
今回はDSBCAPS_STATICを同時に指定してるのが原因でした。 インテルiGPUはちょくちょく仕様外の挙動するから困る
俺はテクスチャフィルタリングで悩んだ ■ このスレッドは過去ログ倉庫に格納されています