- 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リンク
- 730 名前:デフォルトの名無しさん mailto:sage [2021/08/29(日) 08:09:58.30 ID:z+CvjRY2.net]
- >>729
あ、やっぱり使わないんだ いろいろ試したけど挙動的にZバッファは関係なさそう まあ俺が正しく使えてないだけだろう どっちにしても素直にポリ袋使うわありがとう
- 731 名前:デフォルトの名無しさん mailto:sage [2021/08/29(日) 13:14:12.73 ID:z1k369XY.net]
- >>730
お礼はいらないよ
- 732 名前:デフォルトの名無しさん mailto:sage [2021/08/29(日) 14:13:34.97 ID:k+02Ofrq.net]
- 礼よか札束ぞ
- 733 名前:デフォルトの名無しさん mailto:sage [2021/08/30(月) 06:40:41.94 ID:Mv4wvbyh.net]
- お札はいるよ
- 734 名前:デフォルトの名無しさん mailto:sage [2021/08/30(月) 17:51:05.56 ID:RiczHxxv.net]
- >>731
>>733 どっちやねんw
- 735 名前:デフォルトの名無しさん [2021/09/13(月) 19:48:47.39 ID:LTFifztG.net]
- 馬鹿が書評描くと評価下がる例
https://www.あまzon.co.jp/dp/4863543549
- 736 名前:デフォルトの名無しさん mailto:sage [2021/09/18(土) 08:36:50.03 ID:bA/qQPAi.net]
- https://www.youtube.com/watch?v=iYi2EODfp5A
- 737 名前:デフォルトの名無しさん mailto:sage [2021/10/01(金) 00:50:39.40 ID:H+nLrgEB.net]
- ゲームインストールするときに、 directXって毎回入れたほうがいいの?
- 738 名前:デフォルトの名無しさん [2021/10/12(火) 11:47:15.86 ID:JETpbgo0.net]
- Zバッファをテクスチャにしたいんだけど簡単な方法ないでしょうか?
- 739 名前:735 mailto:sage [2021/10/12(火) 13:31:42.53 ID:JETpbgo0.net]
- IDirect3DDevice9::GetRenderTargetDataを使って
別のテクスチャの領域にコピーとかできるんですかね? 帰ったらやってみます。
- 740 名前:デフォルトの名無しさん mailto:sage [2021/10/12(火) 15:15:46.73 ID:JETpbgo0.net]
- D3DFMT_D24S8で深度バッファ作成して
SetTextureで設定してレンダリングしても シェーダーからZ値が取れないの?
- 741 名前:デフォルトの名無しさん mailto:sage [2021/10/13(水) 18:22:43.52 ID:Jar6uE+V.net]
- 取れないよ
- 742 名前:デフォルトの名無しさん mailto:sage [2021/10/13(水) 20:17:35.12 ID:FoQ7p5uh.net]
- >>741
ここのサンプルみながら一旦テクスチャ用に確保した領域にZ値を書き込んでからやる事にしました。 marupeke296.com/DXGSmp_No_43_ZValueRendering.html ただ色々やってるんですけどイマイチ上手く行きません… 今のプログラムはもっと単純なので、サンプルのワールドビュー射影行列は削除して行っています。 どうもピクセルシェーダーでZ値が取れてない感じがします。 このシェーダーの全体の処理を削除し、単にバッファのコピーをすると 別のシェーダーからはRGB値は取れるので、別のシェーダーの記述は正しい気がします。
- 743 名前:デフォルトの名無しさん [2021/10/13(水) 20:35:17.08 ID:FoQ7p5uh.net]
- こんな形で処理してます。シェーダー部分を丸ごと削除すると別のシェーダーからはRGB値は取得出来るので別のシェーダーは正しく動いてる気がします。
//コード本体部分 lpD3DDev->SetRenderTarget(0, lpRenderSurface); lpD3DDev->SetDepthStencilSurface(lpZBufferSurface); //レンダリングバッファとZバッファには既に色々と書き込まれている lpD3DDev->SetTexture(0, lpRenderBuffer1); UINT nPasses; //四角い板にテクスチャ設定してZ値を取得する用のサーフェスに描画 lpEffect->Begin(&nPasses, 0); lpEffect->BeginPass(0); lpD3DDev->SetFVF(D3DFVF_TLVERTEX); lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, tlvtex, sizeof(D3DTLVERTEX)); lpEffect->EndPass(); lpEffect->End(); //シェーダー部分 struct VS_OUTPUT{ float4 Pos : POSITION; // 射影変換座標 float4 ShadowMapTex : TEXCOORD0; // Zバッファテクスチャ }; VS_OUTPUT VS( float4 Pos : POSITION, float4 ShadowMapTex : TEXCOORD0 ){ VS_OUTPUT Out; Out.Pos = Pos; Out.ShadowMapTex = ShadowMapTex; return Out; } float4 ZBufferPlot_PS( float4 ShadowMapTex : TEXCOORD0 ) : COLOR{ return ShadowMapTex.z / ShadowMapTex.w; // Z値算出 } technique ZValuePlotTec{ pass P0{ VertexShader = compile vs_1_1 VS(); PixelShader = compile ps_2_0 ZBufferPlot_PS(); } }
- 744 名前:デフォルトの名無しさん mailto:sage [2021/10/14(木) 07:29:06.96 ID:sdRsWYAw.net]
- これもしかして、まとめて取得出来るのではなくて
オブジェクトごとに、一つ一つ別に保存してないとダメなんでしょうか。
- 745 名前:デフォルトの名無しさん mailto:sage [2021/10/14(木) 23:40:17.85 ID:zUpXI/dI.net]
- Shadowmapのサンプルが深度バッファをテクスチャにしてるだろうからそれを参考にしたら?
- 746 名前:デフォルトの名無しさん mailto:sage [2021/10/15(金) 08:01:34.77 ID:s5eU50Mv.net]
- >>745
ありがとう。 よく見てくとやっぱり別に用意した書き込み用の Z値を保持するバッファに一つ一つ書き込んでそれを使ってるみたい。 とりあえずその方法でやったら上手く行きました。
- 747 名前:デフォルトの名無しさん mailto:sage [2021/10/15(金) 22:23:06.54 ID:h6XcTt5d.net]
- >>746
お礼はいらないよ
- 748 名前:デフォルトの名無しさん [2021/10/15(金) 22:51:03.11 ID:s5eU50Mv.net]
- 以下を実行すると画面が白くなります。出来ればlpSurface0の内容にはシェーダーが影響せず
lpSurface1だけにfloat4(1.0f,1.0f,1.0f,1.0f)の内容が描画される様にしたいです。 //細かい部分は端折ってます。 lpD3DDev->SetRenderTarget(0, lpSurface0); lpD3DDev->SetRenderTarget(1, lpSurface1); lpEffect->Begin( &nPasses, 0 ); lpEffect->BeginPass( 0 ); lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vtex, sizeof(D3DVERTEX)); lpEffect->EndPass(); lpEffect->End(); その後lpSurface0の内容を画面に描画 //シェーダー struct PS_OUTPUT { float4 target1 : SV_TARGET1; }; PS_OUTPUT PS(float2 input : TEXCOORD0) : COLOR0 { PS_OUTPUT output; output.target1 = float4(1.0f, 1.0f, 1.0f, 1.0f); return output; }
- 749 名前:745 mailto:sage [2021/10/15(金) 23:15:01.24 ID:s5eU50Mv.net]
- 今気づいたけどSV_TARGETはDirect3D9では使えないみたいですね…
エラーが出なかったので気付きませんでした。 それではlpSurface1に出力するにはどうすればいいんでしょうか?
- 750 名前:デフォルトの名無しさん [2021/10/17(日) 11:26:11.17 ID:oNTBMRTn.net]
- >>749
ピクセルシェーダーの出力セマンティックス「COLOR1」を使う 以下を参照 neareal.net/index.php?ComputerGraphics%2FHLSL%2FCommon%2FMultipleRenderTarget ただし、 >複数の色を書き込む場合は、すべての出力色を連続して使用する必要があります。 >つまり 、COLOR0 が既 に記述されていない限り 、COLOR1 を出力にすることはできません。 こういう制約があるようなのでもう一工夫しないとダメだろうな
- 751 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 13:00:51.98 ID:1GH669SN.net]
- >>750
横からだが、こんないいページあったんだな 教えてくれてありがとう
- 752 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 19:03:47.61 ID:j2NOB+RR.net]
- >>751
気にしないで
- 753 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 20:57:07.57 ID:PuFf5apM.net]
- >>750
お礼遅くなりました!ありがとうございます。 もう少し調べながら頑張ってみます。
- 754 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 09:16:59.40 ID:IF6Ria+p.net]
- ここはrustでdirectxをいじる場合の話を聞いてもいいのか?
マイクロソフトがサポートするようだけど
- 755 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 10:19:25.91 ID:kgNtN3Fd.net]
- Rustありきの質問ならRustスレでやればいいだけだが
- 756 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 12:53:39.98 ID:IF6Ria+p.net]
- windows-rsはまだ出来たばかりで言語感の差が初心者に結構きついんですよ
directx12の魔道書を移植しようにもc++にあったものが対応しているかどうかも分からない
- 757 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 19:46:22.95 ID:hf7ly00R.net]
- windows-rsってまだ続いてたんだな
- 758 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 22:39:43.82 ID:Yin5yPj8.net]
- 転職して前の会社で作っていたライブラリを再開発したいと思っています。
前職のライブラリはDirectX9で作成していたのですが、 DirectX9は古くてサポートが切れる可能性があるので、DirectX12かOpenGLのどちらかにしようかと悩んでいます。 ちなみに、使いたい機能は2D表示のみです。 将来性を考えると2D表示のみならマルチプラットフォームで使えるOpenGLの方がやはり良いのでしょうか。
- 759 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 02:00:55 ID:8yVljjyt.net]
- 将来性とか言い出したら既にOpenGLは終わってVulkanだが
無理せずDirect2Dでもやっとけ
- 760 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 09:39:05.65 ID:h8Hug1ue.net]
- >>759
Vulkanって3Dに特化したAPIだから OpenGLは2D用に将来継続するんじゃないんですか?
- 761 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 13:56:42.61 ID:zknXQMI1.net]
- OpenGLは3D用だし将来継続するって根拠も不明
Macじゃ数年前から名指しで非推奨にされていつ廃止になってもおかしくない ふわっとマルチプラットフォーム見据えてるならメジャーなゲームエンジンに学習割いた方がマシ そもそも2Dで扱うバックエンドのAPIなんて大したことやらねえんだからどれ使っても誤差 好きなの使いたまへ
- 762 名前:デフォルトの名無しさん [2022/05/06(金) 15:46:00.86 ID:cW5+23bf.net]
- 将来のために3Dの板に2Dデータをテクスチャして
その3Dの板を画面に表示すればいいw
- 763 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 00:54:37 ID:re+7Vz2R.net]
- 前職で書いたコードって権利的にヤバそうだな
- 764 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 01:16:08.84 ID:aNAH5reX.net]
- DirectStorageです
https://github.com/microsoft/DirectStorage
- 765 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 14:09:19.84 ID:LtVYlCK3.net]
- なんすかこれ
- 766 名前:デフォルトの名無しさん [2022/07/30(土) 16:27:10.10 ID:paa5jUiA.net]
- DX22まであります
- 767 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 16:50:09.07 ID:c0/Fknp3.net]
- Intelのネイティブサポート止める話聞くまで存在すら知らなかった
tps://github.com/microsoft/D3D9On12
- 768 名前:デフォルトの名無しさん [2023/01/20(金) 23:22:28.95 ID:qiUCEM6N.net]
- DirectShowの質問です。
実行ファイルと同じディレクトリに置いたコーデックDLLが使われ pGraph->RenderFile(FileName); が実行されています。しかし他のPCでやると失敗します。 恐らくレジストリに値が無く動かないと思うのですが(コーデック登録がなく) 自力でプログラムからレジストリ登録をやるか、レジストリ登録なしで動かしたいです。 どなたか力を貸してください。
- 769 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 02:33:55.87 ID:aLDqxzMz.net]
- regsvr32.exe 呼ぶだけじゃないん?
- 770 名前:765 mailto:sage [2023/01/21(土) 11:13:10.20 ID:IpxCL/07.net]
- >>769
ちょっと話が変わりますが、今だとmp4ファイルは再生できないのですが これに対応すにはどうすればいいんでしょうか? 外部からインストールファイルを使ってコーデックをインストールするとかではなく プログラムの中だけで完結したい場合です。 DirectShowのフィルターを自作するとかそういう方法になるんでしょうか?
- 771 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 12:55:06.70 ID:aLDqxzMz.net]
- そのコーデックdllがCOM形式なら↓こんな感じ
typedef HRESULT(WINAPI* DllRegFncType)(void); int WINAPI WinMain(… { // レジストリに登録されるので1回のみでOK。登録済みかどうかを設定ファイルにでも保存しておく。 HMODULE hModule = LoadLibrary("mp4codec.dll"); DllRegFncType DllRegisterServer = (FncType)GetProcAddress(hModule, "DllRegisterServer"); FreeLibrary(hModule); DllRegisterServer(); // レジストリに登録 // 上の4行はsystem("regsvr32.exe /s mp4codec.dll")でも代用できる // アプリをアンインストールするときはregsvr32.exe /u mp4codec.dllする // 以下アプリのメインが続く COM形式でないならdllの作者に聞かないとわからない (COM形式かどうかはregsvr32.exe mp4codec.dllで表示されます)
- 772 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 12:59:50.62 ID:aLDqxzMz.net]
- (FncType)GetProcAddress → (DllRegFncType)GetProcAddress
- 773 名前:765 mailto:sage [2023/01/21(土) 13:29:58.89 ID:IpxCL/07.net]
- >>771
ありがとうございます!やってみますね!
- 774 名前:デフォルトの名無しさん mailto:sage [2023/01/21(土) 15:51:38.30 ID:aLDqxzMz.net]
- 逆だった
DllRegisterServer(); // レジストリに登録 FreeLibrary(hModule);
- 775 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 00:08:24.31 ID:Ey1irbU3.net]
- レガシーなHDDでも効果出るかもしれない
https://devblogs.microsoft.com/directx/directstorage-1-2-available-now/
- 776 名前:デフォルトの名無しさん mailto:sage [2023/05/08(月) 23:01:35.22 ID:fjpXov5M.net]
- はじめましてVC++におけるDirectXの設定についてお尋ねします
DirectX SDK Jun 10 というSDKを公式からダウンロードできたのですが ここにあるSDKをインストールし、VC++のincludeとlibフォルダにコピペし コンパイルしたのちにsal.hがありませんと怒られれました sal.hってなんですか???
|

|