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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:24:12.95ID:1IsbON+l
回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
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リンク
529デフォルトの名無しさん
垢版 |
2020/07/01(水) 14:36:32.38ID:fx/dVCbU
>>528
ごめん、わからん
2020/07/01(水) 14:51:58.80ID:NOOUcpDi
>>529
俺は分かった
2020/07/01(水) 14:58:55.81ID:6z00wAxU
D3D11は極めるまで行ったが
12はやる気が起きない
2020/07/01(水) 15:09:17.65ID:r+bahx3T
>>528
シェーダ別けたくなかったら白の1x1テクスチャでも作ってそれを割り当てればよろし
2020/07/01(水) 15:17:19.06ID:ZlpMMKEd
>>532
ありがとうございます
頂点情報が違う場合は、基本的にシェーダーファイルを分ける必要があるということですね
534デフォルトの名無しさん
垢版 |
2020/07/01(水) 18:07:10.52ID:DvB9sQqj
すみません質問なのですが
仮にDirectX11 を使ってローカル座標がそれぞれ異なる
100個のオブジェクトを描画する時

1.頂点バッファを100個生成、オブジェクト事に頂点バッファを切り替えて描画
2.頂点バッファを1個生成、オブジェクト事に頂点バッファの値を MAP,UNMAP で書き換えて描画

1、2でどちらが早いのでしょうか、
また複数のモデルを描画する時は1、2のどちらを使うのが定石とかはありますか?
535デフォルトの名無しさん
垢版 |
2020/07/01(水) 18:18:28.21ID:IfUrt5hg
DirectX11限定って話?
実測したら?
536デフォルトの名無しさん
垢版 |
2020/07/01(水) 18:21:21.64ID:DvB9sQqj
定石が知りたいです
だいたいこうするのが普通、とかそういう指標があれば
2020/07/01(水) 18:52:01.54ID:HcFrrLei
どっちか選べって言われたら 2
538デフォルトの名無しさん
垢版 |
2020/07/01(水) 19:06:09.84ID:DvB9sQqj
やはり頂点バッファを沢山生成すると
何かあるのでしょうか?
map,unmapも気にするほどじゃないって事ですかね
539デフォルトの名無しさん
垢版 |
2020/07/01(水) 19:40:02.69ID:DvB9sQqj
理解しました、2ですね
1だと同じオブジェを複数描画して、それぞれのローカル座標とUVが変わる時に
ダメになりますね

有難うございました
2020/07/01(水) 21:44:01.70ID:E7URM5+K
ダメになるってのはおかしい気がする
やりたい事がハッキリ分からないからなんともいえないけど

1はメモリを使う方法で、残メモリが許す限り普通は1じゃね
2はCPUパワー使う方法で、ロックのコストも馬鹿にならない
処理速度が許容範囲に収まるならいいけど、今の時代無駄な気が

オブジェクトより、マテリアルやシェーダ毎に処理をまとめてDrawの発行数抑えた方が良いよ
固定パイプラインの時代じゃないし、ローカル変換もまとめてGPUにやらせるんや
2020/07/02(木) 00:17:28.18ID:qzzrf8yb
そういう最適化で最も気にしなきゃならんことは
GPUコアを止めちゃならんということ。
コアの運転が滞りなく連続で動いていることを最適と考えろ。
お前の例の1はVBの構築は初回のみの為コアの運転を妨げることはない。
逆に例の2は、ロックしている最中にコアの運転と衝突しストールさせる可能性がある。
よって2は1よりも悪手と言える。
ただしロックのそういった問題は、すでに対策が考えられていて
実際は表面化しにくいだろう。
2020/07/02(木) 03:53:14.45ID:IZIJZ5Qv
>>533
いいってことよ(´・ω・`)
543デフォルトの名無しさん
垢版 |
2020/07/02(木) 13:38:01.33ID:gMQ2id/A
>>540-541
偉そうに振舞いたいのは解るんですが
一般論を述べられてるだけで何の参考にもならないです

>>541
あと初対面の人間にお前は無いだろ、クソが
544デフォルトの名無しさん
垢版 |
2020/07/02(木) 13:46:47.88ID:gMQ2id/A
>>540
ローカル変換を、まとめてGPUにやらすってどういうこと
そこだけ教えてくれね?
2020/07/02(木) 14:36:48.44ID:0asJFMdB
定石が知りたいとか言っといて
一般論は駄目って、大丈夫かお前
546デフォルトの名無しさん
垢版 |
2020/07/02(木) 14:41:20.99ID:gMQ2id/A
>>545
俺が例として1と2を分けた時点で
メモリを多く確保するか、CPUの処理を増やすかなんて事が
解らねーとでも思ったのか?
ガタガタ何を書いてんのかと思えば、何の答えも出してねーだろ

定石があるなら、どっちがそうだと答えればいいだろ
どっちも違うなら、その方法を教えろよと、ただそれだけでいいだろ
下手に出たからって舐めてんじゃねーよ
547デフォルトの名無しさん
垢版 |
2020/07/02(木) 14:44:37.22ID:gMQ2id/A
>>545
テメーが何で絡んできたのか知らねーけど
定石について誰か答えてんのかよ
役にたたねーゴミだな
2020/07/02(木) 16:12:45.60ID:0asJFMdB
お前のキレ芸のおかげで
このスレが盛り上がる効果は
良いと思うが
俺はだるくて付き合えんわ
他のデュエリスト参加しろボケ
2020/07/02(木) 16:28:04.03ID:5LFxPLgV
盛り上がるわけねーだろ…
人が寄り付かなくなるだけ
550デフォルトの名無しさん
垢版 |
2020/07/02(木) 16:28:38.77ID:P2k5coQc
後出しジャンケンは喧嘩の元
551デフォルトの名無しさん
垢版 |
2020/07/02(木) 17:29:24.37ID:gMQ2id/A
ジャンケンするつもりなんてハナからねーよ
つーかなんで誰かと争うって話になってんだよ
質問して、まともな答えが出れば何も文句はねーよ

スレ見てる時間までに、答えが出なかったから、自己解決ありがとうございました
で話題を閉めたのに、答えも書かずに上から目線で因縁だけ付けてきたヤツが居たから
指摘してやっただけだよ
2020/07/02(木) 17:32:34.42ID:q3lU8bAM
>>1を読みましょう
553デフォルトの名無しさん
垢版 |
2020/07/02(木) 17:42:01.18ID:ryu4JvV+
それでも良いけど
回答を引き出せないのも実力だな
逆のことしてるって気付け
2020/07/02(木) 18:02:01.40ID:iUw2wgRn
無毛な争いはやめれ
555デフォルトの名無しさん
垢版 |
2020/07/02(木) 19:17:46.12ID:DOytPOyJ
>>554
もう毛はないので争えないんだ
2020/07/02(木) 20:17:44.24ID:ki7wxCXW
無毛な争いワロタw
2020/07/02(木) 22:32:49.44ID:4/e4/UV5
>>544
ここまで言われて教える気にはならんなw
558デフォルトの名無しさん
垢版 |
2020/07/03(金) 06:58:40.50ID:dLx5Y8f8
役に立たないゴミしか居ないんだな
先に仕掛けてきたのはどっちなのかレスみれば解るだろ
2020/07/03(金) 09:03:02.39ID:xzjQhToj
者 レ 同    争
同 ベ じ    い
士 ル   _  は
で の  _/ |  `
し   _/・ (⌒) _
か  ∠((⌒/ノ_/ |⌒)
発   /  ̄/\_丿・ヽ~
生  /  ̄ノニ\_ V、>
し /   | /  /
な |⌒Y ∧ |  ヽ
い 人 |ノ |/⌒  |
!!|∧ /ヽ /(  _ノ|
 / |||く<、\ヽ\ヽ
/ ノヽ二)\(二_ノ_ノ\\
 ̄            ̄

仕掛けたゴミがうんこマンなら乗ったゴミもうんこマン解るだろ
2020/07/03(金) 09:27:20.70ID:r9jTvXIP
>>558
レスの流れをみてみると、最初に攻撃的、感情的な物言いを始めたのは>>543だな。
何かスイッチ入って豹変しちゃったのか?
561デフォルトの名無しさん
垢版 |
2020/07/04(土) 01:03:50.18ID:KIBH4SNT
SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ!
https://www.youtube.com/watch?v=iy4nnAI9og4
エンジニアの仕事が稼げる理由とは?プログラミングスキルと
仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる!
https://www.youtube.com/watch?v=82Bs-NH8jAM
通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、
会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。
https://www.youtube.com/watch?v=mt6K1RJnk6I
プログラミングに英語は必要か?に対する明確な答え
https://www.youtube.com/watch?v=WWULJbVECKU
私がヤフーを辞めた理由
https://www.youtube.com/watch?v=-G-7Hc3rJw8
【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、
アプリ開発で仕事内容が全く違います。【就活・転職】
https://www.youtube.com/watch?v=_IJQ2iBkf4w
562デフォルトの名無しさん
垢版 |
2020/07/04(土) 14:47:46.35ID:VcOMs9mw
Unity で ミクさんとかキズナアイとかと遊ぶスレはどこ?
563デフォルトの名無しさん
垢版 |
2020/07/04(土) 15:31:54.26ID:ZKMg5qK7
>>562
こっちへおいで
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】 [無断転載禁止]©2ch.net
http://itest.5ch.net/mevius/test/read.cgi/tech/1478142101/l50
564デフォルトの名無しさん
垢版 |
2020/07/05(日) 15:24:13.95ID:BV1t1G9G
拡大縮小をしないスキニング処理は問題なくできるのですが、
拡大縮小を入れると途端にうまくいきません。
原因はどういったことでうまく行かないのか教えていただけないでしょうか?

以下はスキニング行列の計算を行っているコードになります。
void UpdateTransformMatrix(){
m_mCurrentLocalMatrix = Math::Matrix::Transform( m_vCurrentScale, m_vCurrentRotation, m_vCurrentPosition );
m_mCurrentGlobalMatrix = m_mCurrentLocalMatrix * InitMatrix;
if( !IsRootBone() )
m_mCurrentGlobalMatrix *= ParentBone->GlobalMatrix;
m_mCurrentPoseMatrix = OffsetMatrix * m_mCurrentGlobalMatrix;

// 子を更新
for( auto& it : Children )
it->UpdateTransformMatrix();
}
2020/07/05(日) 18:41:04.20ID:VFPNOvVc
答えてやりたいけどこの間の奴っぽくてヤダな
質問内容の段階が似てるw
2020/07/05(日) 19:52:22.47ID:ThubCq9n
まーまず動かそうとしてるモデルの
ファイル形式は何?
それによって違ってくるので
567デフォルトの名無しさん
垢版 |
2020/07/05(日) 20:06:26.08ID:BV1t1G9G
>566
MMD用のモデルのPMXで実装しています。

挙動を調べていたのですが、
例えば肩のボーンのZのサイズだけを変えたら
その子供のボーンに連動しているメッシュがグチャグチャになり、
しかしXYZのサイズを一緒の数値にすればグチャグチャにならず、
ちゃんと子供のボーンに連動しているメッシュも正しく拡大されて大きくなります。
568デフォルトの名無しさん
垢版 |
2020/07/05(日) 20:07:47.91ID:BV1t1G9G
何故こうなるのかがさっぱりわからず困っています。
569デフォルトの名無しさん
垢版 |
2020/07/06(月) 10:42:09.95ID:vjiPzzt6
>>565
+1
答えようと思ったけどそう思ってスルーしてた
2020/07/06(月) 15:46:36.76ID:E8Fr3pVT
ワイもわからんわ
すまんな
571デフォルトの名無しさん
垢版 |
2020/07/06(月) 16:37:43.67ID:adqlPIIW
描ける順序やろな
2020/07/07(火) 00:13:36.61ID:wqab1oeP
>>568
私はやった事ないのでわかりませんが推測として書きます、
おそらく拡大縮小はオブジェクト原点を基点として行われていると感じます。
拡大縮小の操作によってローカル座標原点が変換されて移動してしまう事に起因するのではないかと考えました。
何かのヒントになれば幸いです。
573デフォルトの名無しさん
垢版 |
2020/08/28(金) 23:27:20.14ID:t+ft7h6K
動的シェーダーリンクっていうのを使って頂点カラーを使う関数とテクスチャから色を取得する関数を切り替えているんだが、
頂点カラーを使う方の関数を設定した状態で描画すると以下の警告が出る。
D3D11 WARNING: ID3D11DeviceContext::DrawIndexed: The Pixel Shader unit expects a Sampler to be set at Slot 0, but none is bound. This is perfectly valid, as a NULL Sampler maps to default Sampler state. However, the developer may not want to rely on the defaults. [ EXECUTION WARNING #352: DEVICE_DRAW_SAMPLER_NOT_SET]
使用する関数を切り替えていてもサンプラーを使っているなら必ず設定しなければならんのかコレ?
誰か教えて下しあ(´・ω・`)
2020/08/29(土) 07:43:26.49ID:jSrLwW2w
動的シェーダリンクであるかに関わらずシェーダ内でサンプラステートが宣言されてると判定されれば出る警告
まあ書いてあるとおりスロットに割り当てなくてもいいけど本当に忘れてない?大丈夫?おっ揉?
というただのお節介なのでデバッグランタイム以外ではまったく影響はない

デバッグ出力が汚染されるほど出てくるなら素直にダミーのサンプラ設定しときゃいいんじゃね
575デフォルトの名無しさん
垢版 |
2020/08/29(土) 10:28:19.28ID:c0g48cI1
まじかよ(´・ω・`)
素直にダミーのサンプラー入れておくか・・・・・・
ありがとう。
2020/08/29(土) 13:03:52.56ID:gRfGX/UQ
この警告を消そうと思うと、
テクスチャとか使う時にセットして
使い終わったらNULLをセットする
いわゆる真っ当な組み方になってしまうんだが
Direct3Dのステートマシンって仕組みには
合わなくなってしまうんだよな
違和感を感じながらオレも組んでる
2020/10/02(金) 19:13:47.97ID:CjNN1LJS
11までのコマンド即時実行ならワールド行列用のバッファが一個でいいけどコマンドバッファ方式だとどうしたらいいと思う?モデルごとにバッファ持たせる?
2020/10/08(木) 14:50:32.66ID:9bh/EuLR
>>577
自己解決しました
2020/12/15(火) 14:46:00.40ID:Q801okHJ
Eric Engstrom氏が崩御されましたね(´・ω・`)合掌。
2020/12/16(水) 20:42:46.88ID:bwZfmcUM
功労者だね。
ご冥福をお祈りします。
581デフォルトの名無しさん
垢版 |
2021/01/30(土) 11:17:04.37ID:EWZvTk3z
昔 C で DX9 で書いて Win10 上で動いていたプログラムが
久しぶりに実行しようとしたら動かなくなっていた
dll が見つかりませんとかのエラーも出ずに突然死する
exe の日付は 2016年8月 (たぶん最後にコンパイルした日) なのだが
当時は確かに Win10 上で動いていた記憶がある
何かアプデとかで仕様変わったとか情報ありますか?
582デフォルトの名無しさん
垢版 |
2021/01/30(土) 12:40:35.86ID:ZHDbo8LN
d3dx9_**.dllうんちゃらってエラーなら単にそのPCにDirectXランタイムがインストールされてないだけ
583デフォルトの名無しさん
垢版 |
2021/01/30(土) 12:50:04.81ID:EWZvTk3z
同じ PC ですよ
あと
>dll が見つかりませんとかのエラーも出ずに

は「dll が見つかりません」状態ではないですし
584デフォルトの名無しさん
垢版 |
2021/01/30(土) 14:01:57.61ID:H5HXR/QH
すまんこ全然質問読んでなかったわ
D3D9はWin10でも依然として動くけど微妙な互換性の問題も少なくないのでそれだけじゃなんとも
585デフォルトの名無しさん
垢版 |
2021/01/30(土) 15:57:40.50ID:EWZvTk3z
Texture に使ってた画像のサイズを変えたら
途中まで動いてから死ぬようになりましたω
2 の n乗の制限があった頃なので
多分ぬるぽで死んでるのだと思います
なんとか解決の糸口は判りました
ほんとうにありがとうございました
586デフォルトの名無しさん
垢版 |
2021/01/30(土) 17:56:16.33ID:SAWZ84jg
参照している d3d9.dll を SysWOW64/System32 にある物に変えたら
2 の n乗以外の Texture でも正常に動作するようになりました
ついでに動作中に死ぬことも無くなりました
本当にありがとうございました
2021/02/03(水) 01:00:24.80ID:EXsTlUXo
>>586
自力解決の報告ありがとうございます!
俺も頭のどこかにとどめておきます。わずかながら手持ちにDX9世代のソースもあるので
2021/02/05(金) 17:27:02.44ID:ujO1/J+h
本来は試せばすぐわかることだと思うんですが
ちょっと数日ほど自分で試せないので質問させて下さい
D3D12_RESOURCE_DESCで指定したDimensionがtextureのものに対してconstant buffer viewを作ったり、
shader resource viewで異なるDimensionを指定することは可能なのでしょうか?
589デフォルトの名無しさん
垢版 |
2021/03/02(火) 07:01:17.13ID:HJKV2UiN
古いバージョンの話が出てるので便乗で質問。
version7,8,9くらいのゲームをフルスピードで動かすと
古いビデオカードでも新しいビデオカードでも速度殆ど変わらないんだよね。
どっちもFps300前後でしか動かない。倍くらい行きそうだけど全然変わらない。
まるで制限がかかってるような感じ。古いversionだと動作に制限でもあるの?
2021/03/02(火) 08:50:11.88ID:ujQhUvz+
無いよ
CPU律速になっててGPU関係ないとかそんなオチでそ
591デフォルトの名無しさん
垢版 |
2021/03/02(火) 11:54:09.60ID:f7OYJ+/1
VSync同期じゃ300も出ないか
2021/03/02(火) 19:06:29.81ID:pmjTxoG2
>>591
バカは黙ってろ
2021/03/02(火) 20:23:06.80ID:HJKV2UiN
>>590
そうなのかもしれない。もうちょっと調べてみる。ありがとう。
594デフォルトの名無しさん
垢版 |
2021/03/04(木) 12:20:58.55ID:jQppShlC
低レベルな質問でごめんだけど
D3DXMATRIX a,b;
a *= b;
この中身はどうなってるんでしょうか?
a.m[4][4]とb.m[4][4]をどう乗算してるんでしょうか?
2021/03/04(木) 13:05:37.61ID:QKsAX4i1
a = a*bと同じ
2021/03/04(木) 13:31:42.58ID:jQppShlC
>>594
展開したらこうなることがわかりました
この部分が遅いのでもっと速くする方法ないかなと思いまして
void MatrixMultiply(MATRIX *pOut, MATRIX *pM1, MATRIX *pM2)
{
int x, y;
float mx0, mx1, mx2, mx3;
float *p1, *p2;
MATRIX mat;
MATRIX *pRetOut;

pRetOut = &mat;
for(y = 0; y < 4; y++) {
p1 = pM1->m[y];
mx0 = *p1;
mx1 = *(p1+1);
mx2 = *(p1+2);
mx3 = *(p1+3);

p2 = pRetOut->m[y];
for(x = 0; x < 4; x++) {
*p2 = mx0 * (pM2->m[0][x]) + mx1 * (pM2->m[1][x]) +
mx2 * (pM2->m[2][x]) + mx3 * (pM2->m[3][x]);
p2++;
}
}
*pOut = mat;
}
2021/03/04(木) 19:04:29.34ID:5e2IZrPb
ちなみにアンタは行列の乗算って知ってるわけ?
2021/03/04(木) 20:33:11.68ID:jQppShlC
>>597
ゲームのプログラム自体あまりやった事なく
人が書いたコードを弄って速くならないかなと思ってまして
2021/03/04(木) 21:41:29.57ID:UWFO43+K
車輪の大発明
2021/03/04(木) 22:04:19.17ID:jQppShlC
>>599
これ以上は無理そうなら諦めます
2021/03/04(木) 22:45:11.05ID:ls8aTj6l
Ruby のNArray みたいなベクトル演算すれば、Octave 並みに速くなる
2021/03/04(木) 23:07:28.74ID:4abrZpdZ
ウッソだろRuby妖怪ここにまで出るのかよ
2021/03/05(金) 10:49:05.54ID:ev+bkds+
>>594
MSの実装が見たいならd3dx9mathの後継にあたるDirectXMathのXMMatrixMultiplyを参照
DirectX SDKならxnamathmatrix.inl、Windows SDKならDirectXMathMatrix.inlの中にある
2021/03/05(金) 14:10:30.65ID:Lp1NNsNW
>>603
ありがとうございます!見てみます!
2021/03/05(金) 18:50:51.40ID:QgX7cNiF
4x4乗算関数の処理時間なんて微々たるもんだと思うが
これが遅いと判断した理由ってなんだろう?
速い遅いなんて相対的なもんだし基準がなければ判断出来ないと思うが
何とくらべたんだ?
2021/03/05(金) 18:52:33.57ID:QgX7cNiF
ま、つーか質問自体釣りだよね
わーってるよ
2021/03/05(金) 20:13:09.58ID:w6A0JmnZ
DirectX9のお話
http://masafumi.cocolog-nifty.com/masafumis_diary/2021/03/post-f544e0.html
608デフォルトの名無しさん
垢版 |
2021/03/06(土) 13:35:15.25ID:bGzUu7RI
計算に時間が掛かってるんじゃなくて
データ移動に時間が掛かってると予想
2021/03/14(日) 10:53:09.90ID:I6EF5SIC
DirectX懐かしいな
最近はunityとかあるから
610デフォルトの名無しさん
垢版 |
2021/05/06(木) 22:35:59.57ID:/wa6Ki2m
昔作ったゲームのコード触ってるんだけど(Ver7.0)
ウィンドウモードでもディスプレイの解像度変更するとテクスチャバッファがロストするの困る。
なんとかならないものか。
611デフォルトの名無しさん
垢版 |
2021/05/07(金) 11:49:54.25ID:fHTm+yKw
device reset 多用した記憶がある
http://marupeke296.com/DXG_No52_DeviceLost.html
2021/05/07(金) 16:18:46.08ID:8p/kYSMl
>>611
ロストが面倒なのでウィンドウモードで動かしてたはずだったが
ウィンドウモードでも起こる事があるんだね。
仕方ないのでロストが発生したら座標とかフラグとか一部のデータだけ残して
初期化処理をまるっとやる事にしたよ。
2021/05/07(金) 21:29:39.88ID:J3fm5doY
DirectXの機能レベルがよくわかりません。
例えば 11_0 までの機能を使う場合に
DX11とDX12で何か違いはあるんですか?
2021/05/08(土) 14:46:14.63ID:ApDttRWa
>>613
D3D11とD3D12は別モノのAPI
機能レベルが異なると同じAPI上でも一部の機能に差異がある
低い機能レベルを指定してデバイスを作成すれば古いハードウェアで動かせる可能性がある
2021/05/08(土) 16:16:08.03ID:Qd5m6V7T
機能レベルは、どの機能までサポートできてるかの指標に過ぎない。
DX11とDX12はAPIが違うから、記述方法や実行時のパフォーマンス等も異なる。
という認識であってますか?
2021/05/08(土) 18:30:43.70ID:ApDttRWa
>>615
そんな感じの認識でおk
2021/05/08(土) 22:04:42.39ID:Qd5m6V7T
>>616
ありがとうございます!
2021/05/09(日) 18:38:27.94ID:iCAk1wee
>>617
どういたしまして
619デフォルトの名無しさん
垢版 |
2021/05/09(日) 20:01:03.26ID:xtmxe3CZ
最近古いプログラムの手入れをしてるのだが
ver7.0だと2048x1280以上の解像度で初期化しようとすると必ず失敗する
これはもうどうしようもないのかな
殆ど仲間内だけで使うものなので、裏技的な解決でもいいので
分かる人がいたらおしえて
2021/05/14(金) 12:05:31.96ID:ps8YB4jk
良い記事だった
https://www.akiradeveloper.com/post/google-rule-the-world/
2021/05/14(金) 13:02:23.62ID:dwsPOlKo
ヤンデレ
https://www.akiradeveloper.com/post/anrakushi/
2021/05/14(金) 13:08:05.85ID:P4hCfYLZ

DirectX無関係
グロ注意
623デフォルトの名無しさん
垢版 |
2021/05/16(日) 19:42:20.14ID:Sjgu1Djw
Direct3D9なんだけどCreateDeviceのD3DPRESENT_PARAMETERSのPresentationIntervalの値で
Vsyncするかどうか切り替えられるのは分かったんだけど、デバイス作成後に切り替えたい場合はどうすればいいんでしょうか?
デバイスに変更出来るようなメソッドが見当たらないので困ってます。いちいち再初期化しないといけないんでしょうか?
2021/05/17(月) 11:16:13.25ID:bdQcRmr5
>>623
デバイスの再作成ってかResetは必要

ウィンドウモードならCreateAddtionalSwapChainの方で作って
切り替える時にスワップチェインだけ再作成って手もあるけど

D3D10.x以降ならPresent時にvsync待つか指定するだけ
2021/05/17(月) 12:31:43.62ID:Rz91nDza
>>624
そうなんだー面倒だな。
フルスクリーンは使わないのでスワップチェインの方法でやってみます。
ありがとう。
626625
垢版 |
2021/05/17(月) 15:42:56.27ID:Rz91nDza
スワップチェインで切り替えようとしたんだけど、このコードでは上手くいかない… 真っ暗…
lpSwapChain[1]をlpSwapChain[0]に変えると正しく描画される。これじゃダメなんでしょうか?

D3DPresentParam.BackBufferWidth = Width;
D3DPresentParam.BackBufferHeight = Height;
D3DPresentParam.BackBufferFormat = D3DFMT_A8R8G8B8;
D3DPresentParam.BackBufferCount = BackCount;
D3DPresentParam.MultiSampleType = D3DMULTISAMPLE_NONE
D3DPresentParam.MultiSampleQuality = 0;
D3DPresentParam.SwapEffect = D3DSWAPEFFECT_DISCARD;
D3DPresentParam.hDeviceWindow = hWnd;
D3DPresentParam.Windowed = TRUE;
D3DPresentParam.EnableAutoDepthStencil = FALSE;
D3DPresentParam.AutoDepthStencilFormat = D3DFMT_D24S8;
D3DPresentParam.Flags = 0;
D3DPresentParam.FullScreen_RefreshRateInHz = 0;
D3DPresentParam.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &D3DPresentParam, &lpD3DDev);

lpD3DDev->GetSwapChain(0, &lpSwapChain[0]);
D3DPresentParam.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
lpD3DDev->CreateAdditionalSwapChain(&D3DPresentParam, &lpSwapChain[1]);

lpSwapChain[1]->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &lpBackBuffer);
lpD3DDev->SetRenderTarget(0, lpBackBuffer);
lpBackBuffer->Release();

lpD3DDev->BeginScene();
ここで色々描画
lpD3DDev->EndScene();
lpD3DDev->Present(NULL, NULL, NULL, NULL);
2021/05/17(月) 16:23:52.09ID:bdQcRmr5
>>626
デバイスの暗黙のスワップチェインと追加のスワップチェインに同じウィンドウ指定してるからかな?
CreateDeviceに渡すウィンドウハンドルを

CreateWindowEx(WS_EX_NOACTIVATE, "STATIC", windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);

とかで作ったダミーウィンドウを指定してCreateAddtionalSwapChainに渡すのだけ実際のウィンドウハンドルを指定してみて
2021/05/17(月) 16:59:03.35ID:Rz91nDza
>>627
ありがとう。あとでやってみます!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況