- 1 名前:デフォルトの名無しさん [2018/03/23(金) 15:24:12.95 ID:1IsbON+l.net]
- 回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 前 【C++】 DirectX初心者質問スレ Part40 【C】(c)2ch.net https://mevius.5ch.net/test/read.cgi/tech/1474782237/ >>2リンク
- 92 名前:デフォルトの名無しさん [2018/07/20(金) 14:39:58.10 ID:VlOc7Xbe.net]
- レス頂きまして、ありがとうございます。
>これを書いてる場所が可笑しい 場所ですか・・・、これは 便宜上隣り合ってるだけで、実際の記述とは異なります。(´・ω・`)
- 93 名前:デフォルトの名無しさん [2018/07/20(金) 15:31:13.30 ID:9AbXiOEg.net]
- RELEASE(&lpTexture[j]);
じゃね? 知らんけど
- 94 名前:よろしこ [2018/07/20(金) 17:05:06.82 ID:VlOc7Xbe.net]
- 自己解決しました。
レスポンスをくださった方々ありがとうございました。 機会がありましたらまたよろぴくぴくぴくです(´・ω・`) o.8ch.net/17l7p.png
- 95 名前:よろぴこ [2018/07/20(金) 17:08:20.35 ID:VlOc7Xbe.net]
- 解決法は画像データ(pngデータ)のサイズを半分にしました。
- 96 名前:デフォルトの名無しさん [2018/07/20(金) 19:46:09.51 ID:c77xM4ns.net]
- 2のN乗とかか
- 97 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 19:05:29.05 ID:38hSWpmt.net]
- DirectX滅亡まで秒読み開始
- 98 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 19:21:20.21 ID:19TOdeI6.net]
- DirectXは永久に不滅です!
- 99 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:32:52.42 ID:3dxz5Rk6.net]
- ディファードレンダリングについて質問です。
directx11でディファードレンダリングを勉強中なのですが、 最終描画でカラー情報と法線情報をうまく取得できません。 以下の画像のようにテクスチャ一枚一枚に描画されるような感じになってしまいます 左上がカラーと法線、下が結果です iup.2ch-library.com/i/i1926984-1533963662.png iup.2ch-library.com/i/i1926983-1533963662.png そのまま取得するだけではだめなのでしょうか?
- 100 名前:デフォルトの名無しさん [2018/08/13(月) 16:05:10.01 ID:obMX332h.net]
- Not Found
- 101 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:18:49.27 ID:urswoUFg.net]
- すみません、上げなおしました
iup.2ch-library.com/i/i1927453-1534144502.png iup.2ch-library.com/i/i1927454-1534144502.png
- 102 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 17:12:25.04 ID:YdemEp8d.net]
- >>101
参照するメッシュがスクリーンじゃなくて、立方体になってるじゃん
- 103 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 18:07:05.90 ID:hJrJ9HSe.net]
- >>101
最後は立方体じゃなくて1枚の板ポリを描画する
- 104 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 21:02:12.89 ID:Tq2c1yHL.net]
- >>102
>>103 上手くいきました!! ありがとうございます
- 105 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 17:50:04.02 ID:GfcO4nK4.net]
- >>104
いえいえ
- 106 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 00:16:57.92 ID:TP+ulg07.net]
- Direct3D12で描画ループを描けた記念のカキコ。
Direct3D12は、かなりVulkan(Mantle?)の影響を受けているけれど、 11以上に描画パイプラインが理解しやすく、GPUをイメージしやすくなっていていいね。 もう11には帰れない。 11に帰りたくない。 そこで12を普及に当たって、躓き易い箇所を整理、共有しておきたい。
- 107 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 00:29:42.32 ID:TP+ulg07.net]
- 箇条書きで。
<Descriptor Heap、Descriptor Table、Root Signature、そしてCBV,RTV,DSV,SRVの関係> 1.Descriptor Heapとは? CPUとGPUを結びつけるCPUポインタとGPUポインタの集合。 GPUポインタは、リソースを示し、CPUポインタはハンドルを指す 又、一つのエントリが11でいう「ビュー(RTV、DSV、SRV、CBV)」 2. Descriptor Tableとは? シェーダリソース。 3.Root Signatureとは? シェーダにリソースを入力するデータの構造定義。 レジスタとのバインディング情報 機械翻訳だと「ルート署名」とか翻訳されるが、罠なのでスルー推奨。 決して、ルート証明書で署名したASN.1符号データなんかじゃない。 ヘッダを指して「シグネチャ」と呼ぶ、そういう慣習から来るワード QA. シェーダリソースの構造、レジスタとのバインディングって、どう決まるの? Root Signatureのパラメータテーブルに登録する「Descriptor Table」で規定する構造で決定される。 ここだけ理解すれば、D3D12の入門で吐きそうになることは軽減できると思う。 次の難関は、nodeTypeとTextureロードだけど、ここは頑張れ。 テクスチャロードは、明示的に命令リストを介してGPUに配列を正規化するように命令を飛ばすことをプログラムするだけの話。 nodeTypeは、マルチGPUでの処理を制御するための情報。
- 108 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 08:23:12.12 ID:cK7DWfih.net]
- 素晴らしい。
DirectXまだまだ終わらんよ。
- 109 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 09:46:38.02 ID:LJ797i4F.net]
- D3D12はD3D11がやってくれてたことを自前でやるだけだから凡その場合どうでもええが
DXRが目的の場合はいよいよ避けて通れなくなりそうだからなあ
- 110 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 01:31:45.98 ID:vcFx3lE6.net]
- どうせまた複雑過ぎるとか
世論が騒いで 易しくなった13が出るだろ それまでワイは手を出さんで つーかそれまでにガンとかで 死んでそう
- 111 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 01:36:13.96 ID:zXZq/jKJ.net]
- いや、簡単は11、複雑は12と住み分けることになってる。
- 112 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 11:56:44.32 ID:0hGhn6dd.net]
- どこで質問していいか判らなかったので質問させて下さい。
LOGFONT の lfPitchAndFamily の FIXED_PITCH と同等の判定を FreeType2 で行いたいのですが、face_flags を FT_FACE_FLAG_FIXED_SIZES と FT_FACE_FLAG_FIXED_WIDTH で判定しても、 どちらも FIXED_PITCH と違う判定が返されてるのです。 何か方法はありませんでしょうか?
- 113 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 18:25:42.25 ID:IlfNWypd.net]
- int* str;
int *str; ポインタなんだけど、2つの書き方の違いって何?
- 114 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 19:09:20.22 ID:3qLPo3UW.net]
- 思想、宗教の違い
- 115 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 08:29:11.39 ID:sSqkHd4p.net]
- >>112
固定ピッチにしたいなら、固定ピッチに対応したフォントに限られる。 MSpゴシック、游ゴシックなんかを与えても固定にはならない。(と、思う) 恐らく、NotoSansMonoというキーワードが妥協案におすすめ。
- 116 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 08:36:33.49 ID:swhwlLlG.net]
- 字形の描画(レンダリング)で言えば、アンチエイリアス(輪郭のギザ付きを中間色で誤魔化す)もFTはやってくれるから、自前でピッチを固定したり、間隔を整えようとすると苦労する。
数学というよりも心理、グラフィックスデザインの領域に近いのかもしれない。 ついでに言うとDirectWriteは字形のパス(この場合、頂点配列に近い)を出力できる。
- 117 名前:デフォルトの名無しさん [2018/08/22(水) 13:49:54.72 ID:Q4k/bgn4.net]
- >>113
前者は int* str, hoge, fuga; っていうミスをしがち 後者は int *str, hoge, *fuga; で書き分けの意図がはっきりする よって後者をおすすめします
- 118 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 14:34:01.47 ID:BSjDybOq.net]
- >>115
説明下手で済みません。 そういう意味ではなく、Faceに読み込んだフォントが 固定ピッチなのか可変ピッチなのかを判定したいのです。
- 119 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 17:53:38.04 ID:su77kwqg.net]
- >>117
理解はできるが、後者は気持ち悪くてできないなぁ(汗) しょうがないから1変数1行ずつ書いてる。
- 120 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 18:03:19.36 ID:Y/fFyhhT.net]
- >>118
詳しくは知らないが、恐らく「ない」んじゃなかろうか。 以下、すべて蛇足、憶測。 ウィンドウズほど優しくできていない。 字形のレンダリングに限れば、必要としない判定。 必ず字形毎(文字毎)に設計された間隔を読むから。 あとFTはAndroidで使われているから、そっちほが詳しくのがいるのではないかと。
- 121 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 18:46:30.87 ID:exTCpVs2.net]
- >>117
ありがとうございます
- 122 名前:デフォルトの名無しさん [2018/08/22(水) 19:57:06.31 ID:Q4k/bgn4.net]
- >>119
気持ち悪いのは int *str, hoge, *fuga; が混ざってるからで 完全に一行ずつに分けなくても int hoge, hage; int *str, *fuga; なら問題ないだろ
- 123 名前:デフォルトの名無しさん [2018/08/22(水) 19:59:38.50 ID:Q4k/bgn4.net]
- int* str, hoge, fuga;
の意図が int* str, * hoge, * fuga; だとするとこっちの方が気持ち悪い
- 124 名前:デフォルトの名無しさん [2018/08/22(水) 20:00:22.96 ID:Q4k/bgn4.net]
- 宗教戦争になるのは認める
- 125 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 14:19:36.46 ID:0oLK3sfm.net]
- ミニゲームじゃなくて気合入って作られてるDirectX使った出来の良いゲームで
言い方悪いけどパクれるというかお手本になるソースコードって公開されてない?流石に都合良すぎるか
- 126 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 15:20:39.26 ID:fvt/af8o.net]
- GitHubを漁る
- 127 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:25:35.05 ID:cv8sNhFm.net]
- 文法、記述ルールは、宗教戦争だけど、
最近流行りのヌルポ排斥運動は、熾烈な勢いがある。 コーティン?だったかは、変数の使い回しを言語レベルで排斥する思想。 ヌルポを排斥するため「仮決め(代入なしの変数宣言)」を許さない。変数の仮決めは穢れている。 初期値から消滅まで、必ず値を持たせるためには、有意な値を引き回せばよい。 結果、グローバル、アクセス自由度の高い変数に流れ、見通しの悪い、誰が更新参照してんだかを特定しにくく(匿名性を高める効果を促進しやすく)なるか、アホみたいに引数を引き回すかコンテキスト構造体を引き回すことになる。 コンテキスト構造体とは、すなわち匿名性の促進と道義。
- 128 名前:デフォルトの名無しさん [2018/08/23(木) 22:36:02.39 ID:DjzyTv43.net]
- >>125
ソースコードだけならば、Elonaがソース公開されているんでないかな。 よくしらんけど。もしかしたら作者と直に連絡を取った人だけに渡してるのかもしれん。 最近は、コンシューマでもインディーズとカテゴライズされて地位が出来上がっているから、なかなか巡り会えないと思う。 最近のインディーズゲームは、少しおかしいぐらいに技術力が高いからね。 3Dシューティングで視点がステージや進捗で変わるのがあるが、あれはかなり異常な出来だった。 もはやプロの仕事。
- 129 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 16:33:14.61 ID:aPxb4sFP.net]
- もうDirectX使うの止めるわ
- 130 名前:125 mailto:sage [2018/08/25(土) 16:55:07.75 ID:ux2vpN2s.net]
- >>126
適当にGitHubとか言ってるんじゃなくてマジであんの?GitHubすごいな どういった風に検索すればいいんですか? >>128 Elonaはもうソース配布してないみたいですね というかElonaってHSPだけどDirectX使ってたのか
- 131 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 17:04:30.41 ID:YH9nAcbl.net]
- >>129
まぁ、そう言わずに…
- 132 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 17:20:12.58 ID:uMKey/32.net]
- >>129
DirectX5からの付き合いだが、俺もVulkan移行中ですわ
- 133 名前:デフォルトの名無しさん [2018/08/25(土) 22:41:08.90 ID:xNcAdL4l.net]
- directX12で勉強がてらゲーム作ってたけどAI流行ってたから
CS使ってAIの実験してるわ。 とりあえずC++とDirectxあれば何でもできるね
- 134 名前:デフォルトの名無しさん [2018/08/26(日) 21:10:42.11 ID:9TzHFCTa.net]
- >>129
VulkanとD3D12、両方使っているけど、 比較的に12の方が優しいが、どっちも癖がある。 整理されていて、より些細なことまでできる分、一山越えると少しだけVulkanが好きになる。 Vulkanの入力アタッチメントなんかは、避けるべきと思う。 vulkanとd3d12の違いは vulkan ・描画バスの仕組み(このパスは、マルチパスレンダリングのパス) d3d12 ・レイトレができる(らしい)
- 135 名前:デフォルトの名無しさん [2018/08/26(日) 21:16:14.17 ID:9TzHFCTa.net]
- 描画パスの仕組みがないのは、恐らくは後方互換性。
利用するプログラマをつき放さない意味での用語や理解についての互換性が趣旨に感じた。 (そんな言葉はないけど、エクスペリエンスのデノミを避ける、が近い?) Vulkanの描画パスは、吐ける。
- 136 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:08:56.87 ID:GZFWl5MZ.net]
- 何でOpenGLやめるん
- 137 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 23:09:40.94 ID:GZFWl5MZ.net]
- ↑クロノスグループが、の意味ね
- 138 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 04:36:36.26 ID:xIxAfuYd.net]
- ゲーム制作をしてるのですが、
XInputGetState関数でXbox Oneのコントローラーは扱えますか? MSDNでは 『XInput とは、Windows 向け Xbox 360 コントローラーからの入力値を、アプリケーションで受け取れるようにする API 』 と書いていたのですが… https://msdn.microsoft.com/ja-jp/library/bb173045(v=vs.85).aspx
- 139 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:12:00.72 ID:rKzetDHK.net]
- >>138
スチームでの対応状況が参考になるのではないかと。 非対応なら無理。対応しているならいける余地はありそう。 7でPS4コントローラがUSB接続で制御できたことは確認済み。 なお、これはDirectInput8を使った。
- 140 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 11:19:22.36 ID:9KYhKRgJ.net]
- ありがとうございます
- 141 名前:138 mailto:sage [2018/08/27(月) 11:32:24.96 ID:9KYhKRgJ.net]
- 検索して探していると『WindowsにはXBoxのコントローラを使用するためにXInputというAPIが用意』とか『Xbox One、Xbox360等のX-input式のコントローラー
』とか等と書いてあるブログが複数発見したので同じ仕組みかな?とは思うのですがMSDNを見ているとXbox360専用と書いていたので
- 142 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 18:27:11.34 ID:kh1Bw1m+.net]
- >>138
使えるよ
- 143 名前:デフォルトの名無しさん mailto:sage [2018/08/30(木) 00:13:35.30 ID:qBKCuhvw.net]
- >>137
Currentは、もうヤダ。 マルチスレッドレンダリングする上で面倒くさい。 って事だと理解している。 命令のキューと整理されれば、プロセッサと同様なメモリ保護も視野に入るし、 とあるシェーダが別プロセスのテクスチャを読める可能性を排除しやすい。 11までのGPUは、そういうのは皆無だろうし、12にもvulkanにもなさそうだしね。 GPUにスワップメモリ、仮想メモリ空間、スワップで逃がすストレージなんかないのだから。
- 144 名前:デフォルトの名無しさん [2018/09/03(月) 12:41:04.98 ID:NxxlWETJ.net]
- DirectX9でSetRenderStateを使ってブレンディングする場合
除算ブレンディングはどうやったら良いでしょうか? 加算なら以下で出来ますが。除算がよく判りません。 lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
- 145 名前:デフォルトの名無しさん mailto:sage [2018/09/03(月) 15:45:46.51 ID:O77C1Rb1.net]
- >>144
君には教えない
- 146 名前:デフォルトの名無しさん [2018/09/03(月) 21:12:07.01 ID:NxxlWETJ.net]
- >>145
おしえて!w
- 147 名前:デフォルトの名無しさん [2018/09/04(火) 05:42:00.75 ID:ygKGdo3P.net]
- >>144
公式のリファレンスにのってない?
- 148 名前:デフォルトの名無しさん [2018/09/04(火) 13:02:02.42 ID:hJtprqgF.net]
- dstをぜろ。srcを色指定にすればいいだけに見える
oc=(tc*dest bc)+(pc*src bc) tc ターゲット色、pc シェーダ出力色
- 149 名前:デフォルトの名無しさん mailto:sage [2018/09/04(火) 15:48:34.16 ID:ep2b6+2r.net]
- >>147
たぶん載ってない。 >>148 わー!ありがとう!やってみる。
- 150 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 16:13:46.89 ID:M1sJGdfN.net]
- 自己解決したわ、アホ共。
- 151 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 08:55:08.63 ID:c/4EXXgn.net]
- 皆さんDirect3d上でのGUIは
何を使っていますか?
- 152 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 09:06:48.54 ID:fHwpB0MY.net]
- 自作かImGuiやね
- 153 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 08:25:36.60 ID:vjUQtdrA.net]
- ウィジェットのことなら自作だな。
良さそうな小さいのが見当たらない。 ゴリゴリと頂点配列を作って動かしている。 字と背景を別々に作るから、かなり複雑で眠い
- 154 名前:デフォルトの名無しさん [2018/09/18(火) 04:59:22.14 ID:v4BXp/hu.net]
- ただのゲーマーだけど聞いていい?
いまだDirectX6使ってるゲーム好きで時々やるんだけど 古いバージョンっていつか切り捨てられて動作しなくなったりする? Windows10でも動いてるしこれからもずっと動いてて欲しいんだけど。
- 155 名前:デフォルトの名無しさん mailto:sage [2018/09/18(火) 06:57:41.67 ID:PQNDTy/s.net]
- directXはCOMテクノロジーがベースだから
古いゲームでも最新ハードの機能が使えるんやで 例えばdx6ゲームでHWTLやテッセレーション 高度なAAや4k解像度適用などなど ま、今は絶賛開発中なのでしばし待て 22世紀中にはリリースされるよ
- 156 名前:デフォルトの名無しさん mailto:sage [2018/09/18(火) 07:41:24.70 ID:Qxe4285y.net]
- >>154
DirectX云々以外のところで動かなくなる。イースとかもうWidows10では互換モードでも起動すらしない
- 157 名前:デフォルトの名無しさん mailto:sage [2018/09/18(火) 23:07:41.49 ID:v4BXp/hu.net]
- >>155-156
DirectX自体は互換性があって大丈夫ってことかな? それ以外で動かなくなる可能性の心配した方がいいってことか。
- 158 名前:デフォルトの名無しさん [2018/09/19(水) 11:42:50.85 ID:PupZqwJJ.net]
- 誤解が拡散中
- 159 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 22:02:25.18 ID:DVXllMcK.net]
- DirectXに互換性などはないような。
ただ過去のスタックが残っているだけのこと。 それすらDirect3D9c未満が動くのか?は疑問がある。 ドライバが非対応なんじゃないだろうか。 あと、動画再生時のCODECが非対応で、動画再生できずに堕ちるってのもあるような。 ソフトウェアMIDIもドライバで実現しているのか、Microsoft標準ドライバが実装しているのかも疑問がある。 取り敢えず、過去に買ったWindows 95時代のゲームで動画再生できずに堕ちたゲームは観た事がある。
- 160 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 22:08:06.99 ID:DVXllMcK.net]
- Windowsは、Windowsのみで機能を実現など出来ていない。
ハードウェアを扱う部分は、メーカーが提供するドライバが核であり、 そこがWindowsの互換性を提供し、メーカーに向けたドライバ要件が担保となっている。 Officeが必要とするドライバ機能がドライバ要件を決定づけていて、 サポート期間中の製品が必要とする部分なら、ドライバも必須となる。 従って、Direct3D関係の機能は、既に9c未満が動く保証はないと思う。
- 161 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 00:02:40.53 ID:gdLwWWhU.net]
- >>159
ドライバの対応次第ってことかな? 現状ではDirectX6や7や8のゲームは普通に動いてるけど メーカーがドライバ対応しなくなった時が終わりってこと?
- 162 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 07:52:43.20 ID:K+Ua86eW.net]
- >>161
ここでウダウダ聞いてもなんの担保にもならんぞ 対応しなくなったら終わりではなく更新されないだけ、それで動き続けるかどうかは神の味噌汁 たまたま動かなくなっただけかもしれない、たまたま動いているだけかもしれない 3DゲームはドライバでなくDirect3DのAPIに対してアクセスしているので WindowsでDirect3D(の該当バージョン)が態々削除されない限りは互換性はあるとは言える もちろん削除されなくてもWindowsの更新で内部の挙動が変化してゲームが動かなくなるなんてことはざらにある
- 163 名前:デフォルトの名無しさん [2018/09/20(木) 10:45:06.47 ID:7WHuQIEO.net]
- WMが変わった時が一番大きい変化だった気がする
- 164 名前:デフォルトの名無しさん [2018/09/20(木) 10:51:48.29 ID:7WHuQIEO.net]
- DWMが変わったタイミングで動かなくなったアプリが増えたっていう意味です
- 165 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 09:48:58.26 ID:qOWS4e0S.net]
- >>162
互換性自体は結構あるね。 VBのDirectX用のDLLはもうOSに含まれてないけど自前で用意すれば結構動く。 ただ昔のゲームで使われてたカラーキーがもうダメなハードがあるね。
- 166 名前:デフォルトの名無しさん mailto:sage [2018/09/21(金) 18:28:30.46 ID:7CqPf/Kx.net]
- パレットテクスチャとかも危ないか?
- 167 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 21:47:58.86 ID:tZvIjPe8.net]
- 危ないね
- 168 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 17:39:33.56 ID:egrolh38.net]
- 質問です。
メインスレッドで描画しながら別スレッドでテクスチャを大量に読み込むと 画面がちらつきます。D3DXCreateTextureFromFileを実行した時にちらついてるようです。 ここにコードを書く事が出来ないのでエスパーでおねがいします。 思い当たる原因はありますか?D3DDeviceをスレッドをまたいで参照してたりするからでしょうか?
- 169 名前:デフォルトの名無しさん [2018/09/27(木) 17:40:00.04 ID:egrolh38.net]
- age
- 170 名前:デフォルトの名無しさん [2018/09/27(木) 18:12:40.71 ID:lrUHFZkm.net]
- ロックするかあらかじめ全部読んでおくか
- 171 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 20:45:06.26 ID:PZih89QY.net]
- D3DDeviceを
マルチスレッドで使う場合 スレッドセーフで作らんとダメだろう そこはちゃんとやってるのか?
- 172 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 21:58:29.85 ID:ZotRguTd.net]
- マルチスレッドモードに設定してないと、Debugモード実行で警告メッセージ出まくらなかったっけ?
それが出てたら、出ないようにするとこから。
- 173 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 00:01:13.37 ID:frk51yg8.net]
- >>170-172
ありがとうございます。やぱ作り方を不味ってるっぽいっすかね? 言われた事を参考に自分なりに調べてみます。 また何かあったら宜しくお願いします。
- 174 名前:デフォルトの名無しさん [2018/09/28(金) 08:46:21.34 ID:WfDD/blL.net]
- ちらつきで疑わしいのは、presentする辺りかな
ディスプレイに表示する描画ターゲットを作り込むときに参照しているテクスチャでもあるんでないかと。 というか複数のスレッドからデバイスコンテキストを触ると蹴られたと思う。 それでもちらつきが一時的な症状ならば、テクスチャ関数が中で排他しているからでなかろうか? ところでチラツキって具体的な症状としては、どれなんだろう。 ・一瞬黒か白が入る ・カクカクしたアニメーションになる ・デジタルノイズが入る ・サブリミナルな絵が入る ・何しにきたんだよ?お前のために決まってるだろ!と友貴に言われる
- 175 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 09:59:25.03 ID:frk51yg8.net]
- >>174
ありがとうございます。 テクスチャ読み込みした瞬間に「・デジタルノイズが入る」といった感じです。 具体的に言うと「ブロックノイズっぽいものが所々に出る」といった感じです。 症状自体はそこまで酷い訳ではないんですが、チラチラするので気になってます。 一回あたりのノイズのサイズは小さいですね。画面がフルHD時で、128x128くらいです。
- 176 名前:175 mailto:sage [2018/09/28(金) 12:12:50.63 ID:frk51yg8.net]
- テクスチャ読み込み中は特に自分ではD3DDeviceの書き換えは行っていなかった(と思う)のですが
一応念のために以下みたいなクラスを作って排他処理を徹底したら直りました! しかも20秒くらいかかってたテクスチャ読み込みが何故か5秒くらいで終わるようになって いいことずくめでw 最高っす。 class CLockObject { protected: CRITICAL_SECTION m_CriticalSection; public: CLockObject(){ InitializeCriticalSection(&m_CriticalSection); } void Lock(void){ EnterCriticalSection(&m_CriticalSection); } void UnLock(void){ LeaveCriticalSection(&m_CriticalSection); } ~CLockObject(){ DeleteCriticalSection(&m_CriticalSection); } }; スレッド1 LockObject.Lock(); 〜 Direct3D描画処理 〜 LockObject.UnLock(); スレッド2 LockObject.Lock(); 〜 テクスチャ読み込み 〜 LockObject.UnLock();
- 177 名前:デフォルトの名無しさん [2018/09/28(金) 14:01:09.20 ID:KnH7gKZy.net]
- >>175
その症状ならむしろ巧くマルチスレッドに動いてしまっている、疑いもあるような。 読み込みが未完なテクスチャを読み込めば、瞬間的に変な画素を参照するから、それがノイズに映る。 でも考えにくいので、変な描画、予期していない描画が挟まれて映っている。 あと突っ込まれなかったから自分で言うが 友貴はチラチラじゃなく、ちゃらいだろ。
- 178 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 15:26:49.89 ID:frk51yg8.net]
- >>177
ありがとうございます。 一応>>176でノイズ自体は解決して読み込み速度も上がったのですが 描画スレッドと別で読み込みスレッドでテクスチャを読み込んでいる時に 今度は排他処理の影響か描画速度がかなり落ちてしまう症状が出てます。 ただ別スレッドにして排他処理をしっかりやって読み込むと読み込み速度は かなり速くなったので開始時に画面を黒で塗りつぶして一気に読み込む方法をこれでやろうと思ってます。 出来れば描画スレッドの速度が落ちずに読み込めればいいんですがこれでも問題ないかなと。 まとめると以下のような感じですね 1 シングルスレッドで開始時に読み込むと普通に20秒くらいかかる 2 マルチスレッドで排他処理無しで読み込むと描画しながら読み込めるが20秒くらいかかりノイズも発生 3 マルチスレッドで排他処理有りで読み込むと描画速度がかなり遅くなるが5秒ほどで読み込める
- 179 名前:デフォルトの名無しさん [2018/09/28(金) 16:04:50.25 ID:O5kQkBkV.net]
- そもそもそのテクスチャは実行時に毎回読まないといけないものなのか?
- 180 名前:デフォルトの名無しさん [2018/09/28(金) 17:38:36.81 ID:TYfa5akj.net]
- 176の実装だとマルチに動いていない気がする。
クリティカルセクションは、一つのスレッドが入ったら、離れるまでは他のスレッドが待たされる。 つまり並列に実行していない。 真面目に並列度を高めるならば、テクスチャ毎に排他オブジェクトを持たせて、読み込みが完了していないテクスチャを描画ループのスレッドが触ろうとしたら、そいつをまるごとスキップして描画を続けるとかするべきかも。 ジオメトリなんかの単位でアセットを管理しているならば、読み込み完了前のジオメトリに紐付くテクスチャや頂点は描画をスキップする実装。 あとはオフラインサーフェースへの書き込みなんかの単位でまるごとスキップとかもできるかも。 チラツキを予防して、読み込み終わったアセットを段階的に画面に映したいなら、そういったリソース管理が必要。 でも大抵は、そんなことせず、読み込みが全部終わるまでは黒い画面を見せる実装を選ぶと思う。 GPUコアの限界までテクスチャなんかの読み込みスレッドを並列化することを選びそう。
- 181 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 11:09:20.58 ID:hzO5ElQi.net]
- >>180
ありがとうございます。 なるほど。効率の面ではまだまだ出来る事は色々あるんでしょうね。 ただ複雑になって下手な事して不具合が出ると困るので自分も単純な方法で行こうと思います。 マルチスレッドで読み込むと読み込み速度自体は上がったので排他処理だけしっかりやって あとは画面を塗りつぶしてそこで一気に読み込む方法を今回は採用しようと思います。
- 182 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 16:02:49.13 ID:urX7Wqqu.net]
- d3dのヘルプを読むと
マルチスレッドでは イミディエイトコンテキストは使わずに 別途デバイスコンテキストを作って 描画スレッドではそれを使うようにとあるよ 多分必要なのはそういうところと思う
- 183 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 16:32:57.82 ID:apMOeRQP.net]
- D3DXCreateTextureFromFileとか言ってるからDeferred Contextすらない世代のことじゃろ
- 184 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 17:59:08.87 ID:3HnGx7Th.net]
- 1809記念
Direct3D12でコマンドキューにシグナルするタイミング 1.ExecuteCommandList() 2.Present() 一回のコールの度にフェンスの数値をインクリメント(=GPUに処理を実行する契機を与える) これを怠ると終了契機にフロントバッファをコマンドキューが掴んでる、との例外が出る。 ギットハブのError on shutdownってタイトルのスレッドにも報告されている。英語 取り敢えず、APIマニュアルでこの旨の事柄を書いたページは見つけられなかった。 ただのシェア
- 185 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 18:58:30.47 ID:bNH0XzXA.net]
- >>184
これからもよろしく頼む
- 186 名前:デフォルトの名無しさん [2018/10/08(月) 01:17:59.94 ID:OIFhWgmg.net]
- ある画像を別に用意したマスク画像の形でリアルタイムでくり抜きたいです(マスク画像のフチのぼかされてる所も再現したい)。
ただしシェーダーは使わずやりたい。ステンシルとかブレンディングでどうにかなりますか? リアルタイムでやりたいのでロックして直接弄るとかは無しでお願いします。 フォトショの例ですがこんな事をリアルタイムでやりたい(くり抜かれた画像の余白の部分はアルファ値で透明になるように) https://helpx.adobe.com/jp/photoshop-elements/kb/cq07050438.html
- 187 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 01:37:54.77 ID:LP2GoVYR.net]
- (1)マスクをレンダーターゲットのαに書き込み
(2)くり抜き対象画像のブレンディング設定値を工夫して書き込み でいけるかな?
- 188 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 02:02:38.28 ID:OIFhWgmg.net]
- >>187
(1)は、アルファチャンネルつきの画像を用意して描画するとして ARGBのうちAだけが反映されるように(2)でうまく合成するという事になりますかね? RenderStateはSRCがDESTALPHAにすると(1)の画像のアルファ値が上手く反映されますね。 ただDESTをどの値にしてもARGBのうちのRGBの部分も反映されてしまってフチが黒くなってしまいます(マスク画像が黒い為)。 ARGBのAだけ反映させるにはどうしたらいいでしょうか。
- 189 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 02:21:51.96 ID:LP2GoVYR.net]
- マスク画像のRGBはオール0(真っ黒)で、Aだけマスクの形となるα値にする。
んで、(1)のときはRGBは加算合成で、AだけSrcをDstにそのまま書き込みってできないかな?
- 190 名前:デフォルトの名無しさん [2018/10/08(月) 03:05:32.73 ID:OIFhWgmg.net]
- >>189
加算合成で黒が見えなくなるのは黒のピクセルのAが0になるからじゃないですかね? RGBはどうやってもなんらかの値を取らないといけないので… ブレンディングでやるのは無理なんでしょうか…
- 191 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 03:58:31.81 ID:OIFhWgmg.net]
- >>187
色々やってみたんですが、まずくり抜きたい画像を描画しておき そのあとにマスク画像として用意した全部黒で真ん中だけ丸くアルファ値ゼロの画像を 上から描画して、最後にその合成された画像を加算アルファで描画すると 余計な部分の黒が全部透明になって理想に近い形になりました。 ただ加算されるので真ん中の描画される部分がちょっとピカピカしてしまいますが。 もうちょっと試行錯誤してみます。
- 192 名前:デフォルトの名無しさん [2018/10/08(月) 13:27:01.63 ID:+5qyKWRv.net]
- 馬鹿っぽい
|

|