- Видео 529
- Просмотров 613 834
Coding Ocean
Япония
Добавлен 10 ноя 2007
"Welcome to Coding Ocean!"
コーディングビーチの住人Eijoです。
毎日ビーチでのんびりコーディング(プログラミング)を楽しんでいます。
そんな浮世離れしたチャンネルですが、プログラミングの面白さを
一人でも多くの方にお伝えできればと思い発信しております。
コンテンツは「C言語」「C++」「ゲームやデジタルアートのアルゴリズム」などで~す。
「やってみようかなぁ」と思われたら、ぜひ住民登録して
いっしょに広~い「コーディングの海」を楽しく泳いでいきましょー。
コーディングビーチの住人Eijoです。
毎日ビーチでのんびりコーディング(プログラミング)を楽しんでいます。
そんな浮世離れしたチャンネルですが、プログラミングの面白さを
一人でも多くの方にお伝えできればと思い発信しております。
コンテンツは「C言語」「C++」「ゲームやデジタルアートのアルゴリズム」などで~す。
「やってみようかなぁ」と思われたら、ぜひ住民登録して
いっしょに広~い「コーディングの海」を楽しく泳いでいきましょー。
DirectX12 ふたつかく
ソリューション github.com/Coding-Ocean/loveDX12Tips.git
ブランチ 04_texture_animation2
よかったらCoding Oceanのメンバーになってくださいです。:
ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
ブランチ 04_texture_animation2
よかったらCoding Oceanのメンバーになってくださいです。:
ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
Просмотров: 162
Видео
Dx12 テクスチャアニメーション
Просмотров 341День назад
github.com/Coding-Ocean/loveDX12Tips.git よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 関数化まったり解説
Просмотров 35814 дней назад
github.com/Coding-Ocean/loveDX12Tips.git すでにクローンされている場合、 ブランチを02_graphic_functionsに切り替えたら、 プルしてください。
ComPtr
Просмотров 230Месяц назад
まだクローンしていないときはクローンしてください github.com/Coding-Ocean/loveDX12Tips.git よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
Dx12 VertexBufferをひとつにする
Просмотров 175Месяц назад
新しいソリューションです。クローンしてください。 github.com/Coding-Ocean/loveDX12Tips.git よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 おくゆきのいれもの
Просмотров 473Месяц назад
DepthStencilBuffer よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 ふたつかく
Просмотров 2002 месяца назад
「コンスタントバッファ」は使いまわしできない。できるのは「頂点バッファ」と「テクスチャバッファ」。 よかったらコーディングビーチの住人になってください ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 がぞうをはりつける
Просмотров 2782 месяца назад
ルートディスクリプタの理解がカギです。 よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 こんすたんとばっふぁ1
Просмотров 2112 месяца назад
ディスクリプタテーブルの理解を深めよう! PixelShader-b1⇒DescriptorTabele⇒DescriptorHeap⇒ConstantBuffer1 よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
DirectX12 こんすたんとばっふぁ0
Просмотров 4292 месяца назад
VertexShader-b0 ⇒RootSignature⇒DescriptorHeap⇒ConstantBuffer0
DirectX12 ばーてっくすばっふぁ
Просмотров 3653 месяца назад
よかったらCoding Oceanのメンバーになってくださいです。: ruclips.net/channel/UCz98mJ0tDifO5t-DnA34tJwjoin
インストールしよう! Visual Studio Communityってやつを。
Просмотров 1,3 тыс.Год назад
インストールしよう! Visual Studio Communityってやつを。
「もうdeleteはしなくていいのよ。」と彼女は言った。Modern C++ : unique_ptr
Просмотров 596Год назад
「もうdeleteはしなくていいのよ。」と彼女は言った。Modern C : unique_ptr
こんばんは。大変勉強になります。ただ、気になった点があったのでコメントさせていただきます。 それは、 UINT createConstantBufferView(ComPtr<ID3D12Resource>& constantBuffer) { D3D12_CONSTANT_BUFFER_VIEW_DESC desc = {}; desc.BufferLocation = constantBuffer->GetGPUVirtualAddress(); desc.SizeInBytes = static_cast<UINT>(constantBuffer->GetDesc().Width); auto hCbvTbvHeap = CbvTbvHeap->GetCPUDescriptorHandleForHeapStart(); hCbvTbvHeap.ptr += CbvTbvIncSize * CbvTbvCurrentIdx; Device->CreateConstantBufferView(&desc, hCbvTbvHeap); return CbvTbvCurrentIdx++; } 等の、関数化です。これはローカルスコープ内のconstantBufferとCbvTbvCurrentIdx等の外部スコープ変数が、一緒に関数内で使われています。DirectXが手に馴染んでくると、ライブラリ化したくなります。もしかしたら、クラス内で使いたくなることもあるかもしれません。そうしたとき、外部スコープ変数を参照する関数をコピべして使おうとすると、大変苦労します。 ですので、変数は出来るだけローカルスコープ変数を参照するようにした方がいいのではと思いました。 UINT createConstantBufferView(ComPtr<ID3D12Resource>& constantBuffer, ComPtr<ID3D12DescriptorHeap>& CbvTbvHeap, UINT disp){ // 何かのコード return ++disp; } 等のように、ローカル変数のみ使うようにした方がスッキリするように思いました。 ディスプレースメントの正当性は、使われ方から呼び出し側に責任を持たせた方がいいのでは。 引数が増えて手間がかかりますが、信頼性があると感じられれば、インライン展開するようにして最適化すると、少しはましになるかもしれませんし。
return ++disp;は間違いでしたね。うーん、使われ方を意識しないとダメですね。
実際に描いてみたんですけどエラー出るんですよね
今回もとても分かりやすい動画をありがとうございました。 今後、fbxsdkでのモデル読み込みはやりますか?
アニメーションしないモデルは3月ぐらいにする予定です。
@ ありがとうございます!楽しみに待ってます!😊
いつも参考になる動画ありがとうございます。 質問なのですが、自前のモデルを使ってコンバートしようと試みたところブレークポイント命令が実行されたというエラー(並列スタックをたどったらCONVERT_MA::fbxToTreeの先のLoadSceneでエラーを吐いていた)が出たのですがこれは自分のモデルに何か不備があるのでしょうか?
めっちゃわかりやすいやん
マルチパスレンダリングの方法もみたいです!よく理解できなくて…
とても分かりやすいです……すごい…
こめんとありがとうございます。
すごいです!応援しています!
ありがとうございます。Unreal Engineはすごいです。
動画を視聴しコマンドプロンプトでプログラムを実行してみたのですが、argcがただ表示されるのみでargvの文字列が表示することができません。 動画の通り行ったので手順は間違っていと思うのですが、原因としては何が考えられるでしょうか?自分なりに調べてvisual studioの設定の変更等もしてみたのですが、どうしても上手くいきません。
一番多いのは、f7キーを押していないパターンです。プログラムを変更するたびにf7でコンパイルし、コマンドプロンプトで実行する必要があります。
最高な動画をありがとうございます。 😊
コメントありがとうございます。 もしご覧になっていなければこちらもどうぞ。楽しいですよ。 ruclips.net/user/livet_yKAS4IJs8
いつもありがとうございます。FKもIKも解説動画のおかげでスッキリ頭に入りました。感謝しかないです。 1点気づきがあったのですが、最後ら辺のmMasterをscalingしたり、rotateしたりする所は、このままだと回転がうまくいかなかったので、mMasterはtranslateとrotateだけにし、mMasterScale の行列を別に作り、スケール変えて一番頭にかけました!これに到達できたのも、mWaistLenとかを別に分ける教え方のおかげなのでさらに感謝しております。 今年もよろしくお願いいたします。
コメントありがとうございます。行列ってすごいですよね。ここまでAIが発展したのも行列のおかげですしね。
数学を勉強しています。2次関数のグラフを作りたいです。動画とコードほしいです。ダウンロードできるようお願いします。
説明欄からクローン出来るようにいたしました。
ありがとうございました。
すいません。また一応確認ですが、例えば同じテクスチャーの草を複数別々の場所に表示したい場合、一つのviewをシグネチャして、座標を変えて別々の場所に複数表示するような事も可能ですよね?
テクスチャのviewは使い回しができますが、matrixを持つコンスタントのviewは使い回しできません。10枚の草を描くとき10個のコンスタントバッファが必要です。dx12の最も悩ましいところです。この動画も作る予定です。
コメントありがとうございます。私はBitBltみたいな操作が出来るかな?と思っていたのですが違うのですね。GPUには複数の処理コアがあるので、並列して実行し、その後マージャ―でマージされるの為、別々に用意するのでしょうかね。すいません、座標変換のプロセスの理解が曖昧で。
ここまで、動画と同じ動きをするコードが書けました。 ステンシルバッファは確保しておけば、自動でシステムが利用するようなイメージですが、そういう認識でいいのでしょうか? DirectX12の大まかなイメージですが、次の様な感じで良いでしょうか? 1,バッファを確保しデータを入れる。 2,viewはそのデータをどういう見せ方をするのかセットする。 3,そのデータをパイプラインからアクセスする為にシグネチャで結びつける。 4,パイプラインセット。 5,コマンドリストをセット、実行。あとこれは想像ですが、if文とかの分岐はないが、論理演算を駆使すればif文相当の事が出来る場合もある。 ルートシグネチャがあるって事は、サブシグネチャもあるっていう事ですね。
こんばんは。質問があります。 ビデオメモリーがテクスチャーデータより少ない場合どうなるのでしょうか?システムが自動でシャドウビデオメモリーを確保し、コマンドが実行されたら、それをビデオメモリーにアップロードするのでしょうか? 感想 難しいというより設定項目が多くて、コードを見たり書いたりするのがしんどいという印象です。「Inside OLE」内のジョーク混じりの文よりは判りやすいと思います。モニカって結局何だったのか、どういうところで使うのか未だに私にとっては謎です。吉川晃司が頭に浮かびます。まあ使わないので手に馴染みませんでした。 プログラム系の技術解説って、大きくつかんでから、細かく見ていくと割と分かり易いかもしれません。あと、APIの作り手側に立って私だったらこう実装するだろうと、想像しながら理解していくと理解しやすいかもしれませんね。
単純に落ちると思います。黎明期ではテクスチャサイズを小さくするしかありませんでした。今はメモリが盛り盛りなので贅沢に使ってますね。
返信ありがとうございます。 じゃ、この画像設定なら、これくらいビデオメモリー使うであろうから、予め調べておこうかなという事も必要になって来るのですね。確かにHeapという文字がインターフェース名に入っていますから、バーチャルメモリーの様なことは出来ないぞと明示しているのですね。C++を使っていたら普通newを使いますから、気付けませんでした。
C++の恐ろしいところは、ここまではnew/deleteの序の口で、この後にnew/deleteのオーバーロードやらplacement new/deleteやらが待っているというところでしょうねぇ……99%のC++erにとっては一切関係のない話ですけれど。
再帰がわからなくて1か月しんどかったですが、スライドでの詳細なご説明でやっっっっっっっと理解できました😭ゆっくりコードを追っていただけたのでわかりました!ありがとうございます😭
コメントありがとうございます。再帰関数は、時たましか出てこないので、なかなか習得できないんですよね。必要な時にやり直すことを繰り返していけばいいと思います。
乳門?
乳門?
UnrealEngine5動画是非お願いします。UC++読むの大変過ぎてきついです。
法線ベクトルの戻り値が参照なのにgmain関数内では値で受け取っていて、collision関数内では参照で受け取っているのはどうしてでしょうか?教えてください。
ここで使っている参照は、受け渡しするときのバイト数を減らすためです。ポインタと同じ目的です。しかし、今回はベクトルが8バイトのため参照を使わなくても同じですね。まとまったデータを受け渡しするときの ”習慣” で、この場合も参照にしているという結論になります。
@@CodingOcean ご教示ありがとうございます。あまりよく分かっていないのですが、クラスを返却するときは、原則参照型としておくのに越したことはないと考えてよいでしょうか?そして、それはデータ容量を減らして処理を軽くするためという理由で間違いないでしょうか?
@@蒼月-e8q 間違いありません。しかしconst参照にしないとカプセルが壊れてしまいますので注意が必要です。
Maya(メイア)
Maya(メイア)
いろんな動画見ています。まじためになって助かります。
まじよかったです。
malloc(), free()でなく、new, deleteが使えるようになった時の嬉しさは忘れられません。
理解ができたり、理解が深まったときに脳内麻薬がでますよね。
いつも勉強になっております。 一つお聞きしたいのですが、VC++を使わずにmakefileとgnu c++を使って動画のプログラムを動かすことはできるのでしょうか?
やったことがないので無責任なことは言えませんが、出来そうな気がします。しかし、ライブラリ周りの設定が大変なのではないでしょうか。。。。。これを書いてて出来なさそうな気もしてきました。AIに聞くのが手っ取り早いかと思います。
@@CodingOcean ご返信ありがとうございます。いろいろと試してみましたが私の力では無理でした。。。大人しくVC++を使いたいと思います。
わかりやすいです!*(p+1) はそういう使い方があったんですね。while loop で p++ なら別で int i++ 使わなくてよくていいですね。普段は機械学習のための Python ですが、C を勉強すると色んな言語の理解が深まるとききまして、勉強してます。
感じのいいコメントありがとうございます。IT系は低レイヤーのものから学んでおくと強みになりますよね~。
いつもお世話になってます よく使う、というか、これ使っとけば間違いない!っていうフォントがありましたら教えていただきたいです
I like "Myrica" font.
@@CodingOcean 感謝
いや最初声良いw
ありがとうございます。ASMR。
遂に始まりました!🎉 勉強させて頂きます。 DX12ではstatic mesh以外に、skin meshアニメーションも学びたいです。🙇
まずは描画の基本から、ゆっくりやっていきますね。
前はVulkanやってたのですが、DirectX12の学習に拝見させてもらっています。用語も使い方も似ていて安心感を感じてます。
Vulkan星人! ウェルカム トゥ DX星!
RUclipsの作成した再生リストのミックスリスト:アジアの音楽に含まれていて、失礼ながら笑ってしまいましたw RUclipsのお墨付きで、椎名林檎さんらと肩を並べております
椎名林檎はデビュー当初から好きでした。それまでは、ああいう尖った曲がヒットすることはなかったので、時代の変化を感慨深く受け取っていました。。。でも、RUclipsのAIは狂ってますね。
ちょうど一か月くらい前からDirectX12の勉強し始めたので、勉強のお供にさせていただきます!いつもありがとうございます!
コメントありがとうございます。よろちくび。
こんにちは。この動画を見てDirectX12の感想ですが、CPUの性能の違いによるパフォーマンスの違いを抑え、GPUに任せられるところを出来るだけ任せるという方向に傾いていると感じました。また、フェンスの実装から、マルチコアでコマンドリストを作り、それぞれのコマンドリストをマージするか、それぞれのコアからコマンドを送るのか判りませんが、マルチコアを活かしていこうと傾向を感じました。
お詳しいですね。とりあえずこのシリーズでは、始めたばかりの方のためにDx11を置き換えるところまでやろうと思っております。物足りないかもしれませんが、よろしくお願い致します。
こんばんは。マルチスレッドプログラムは書いたことがありますが、DirectXシリーズは全く初心者ですので、よろしくお願いします。
(20:37)コマンドキューのキューはqueueで、テレビ局のディレクターが出すキューはcueらしく別の意味ですよ。 queueはFIFOのこと。
勉強になります。完全に思い込んでました。ありがとうございました。
いつもありがとうございます。 さきほど、19:30〜あたりからマイクが切れて聞こえない部分がありましたので、一応ご報告いたしました🙏
使っている回線がしょぼくてすみません。ご報告ありがとうございました。
dx12の解説をされるご予定はありますでしょうか?
明日からスタートします😀
@@CodingOceanやったあぁ!ありがとうございます!
こんにちは。取り合えず、BlenderでFBXファイルをエクスポート出来るところまで出来ました。今後の展開を楽しみにしています。
コメントありがとうございます。明日からDX12をスタートします。シリーズ終了後FBXの読み込みをやる予定です。
勉強になりました!ありがとうございます
DirectX11にも挑戦してみてください。コメントありがとうございました。
本日からの東京研修、子どもがお世話になります。よろしくお願い致します。
3日間、問題なく過ごせました。親戚の方からお土産を頂き恐縮しております。ありがとうございました。
全て動画通りに出来ました。DirectX11初心者向けに大変良い教材だと感じました。アルファブレンドはめんどくさそうですね。 実際の3Dモデルの場合、ポリゴンにテクスチャを張り付ける作業とか、いやぁ、大変そうですね。
このシリーズに追いて来れる方は少ないです。凄いです。ありがとうございます。
喋ってる時の間がASMRみたいですごい集中できた!!
すいません。 Hr = Device->CreateInputLayout(Elements, numElements, vs.code(), vs.size(), &InputLayout); で、「E_INVALIDARG One or more arguments are invalid.」というエラーが出たのですが、出ませんか?
うーん、わかりません。シェーダの出力先assetsが違うのか?うーん、わかりません。
コメントありがとうございます。 何とか出来るなら、何とかしてみます。 実は、MicrosoftのDirectXのサンプルでさえ、ビルド出来ないスキルなので、丁度良かったのですが・・・。
@@otanoshimi4 こんにちは、自分も同じエラーになりました。 //シェーダーバイトコードの読み込み BIN_FILE11 vs("assets\\VertexShader.cso"); //コンパイル済みのVertexShaderを読み込み if (!vs.succeeded()) { OutputDebugStringA("Failed to load vertex shader bytecode "); return E_FAIL; } // シェーダーバイトコードのサイズを出力 char sizeMsg[256]; sprintf_s(sizeMsg, "Vertex shader bytecode size: %zu ", vs.size()); OutputDebugStringA(sizeMsg); シェーダ読み込みのところに↑のコードを追加して、シェーダーファイルのサイズを表示するようにしてみました。 ログには、Vertex shader bytecode size: 384 と表示されるので、自分はファイルの読み込み自体はできていそうでした。 原因は別のところにありそうですね… Windowsのバージョン10を使っていてDirectX12が標準で入っているそうなのですが、念の為DirectXの再インストールも行いましたが改善はしませんでした。
Bing Copilotで、より厳密にスタイルにして「DirectX11用のPeekMessageを使ったシンプルなメッセージループをpragmaでDirectX11ライブラリをリンク出来るようにした64ビットコードを作りたいのですが、作れますか?」で、やっとビルド出来るコードが出来ました。
これは質問でしょうか?それとも出来たという報告でしょうか?
すいません。お手を煩わせて。ただシンプル初期コードが生成されたという報告です。今ばーてっくすの回の動画を拝見しております。ありがとうございます。
@@otanoshimi4 まずはWinMain関数のみで作っていくのが、断然分かりやすいと思いまーす。いろいろ分かってくるとライブラリ化も楽しくなると思いまーす。
ポインタの勉強をしてるのですが、挙動がよく分からないです、、 コード①とコード②で挙動がちがう理由をおしえてください、、、(泣) ーーーーーーーーーーーーーーーーーー ▼コード① int a = 11; int *b = &a; int aa = 22; *(b+1) = aa; //bの次のアドレスにaaの値をいれているつもり。 cout << b << " " << (b+1) << endl; cout <<*b << " " << *(b+1) << endl; ↓(出力) 0x7ffef5af2d54 0x7ffef5af2d58 11 22 ※アドレス二つと値(11と22)が出力される。 ーーーーーーーーーーーーーーーーーー ▼コード② int a = 11; int b = &a; int aa = 22; *(b+1) = aa; // cout << b << " " << (b+1) << endl; //上のコードとの違いはこのcoutをコメントアウトしただけ。 cout <<*b << " " << *(b+1) << endl; ↓(出力) 11 4202500 ーーーーーーーーーーーーーーーーーー アドレスを表示するcoutをコメントアウトするとb+1の中身がかわるのはなぜでしょうか??(泣) ポイントの沼にはまりました。 助けてください。
敵や弾の種類を増やしたいのですが、どこをイジればよろしいでしょうか?
あえてお答えするのをやめておきます。全体の仕組みを把握すると、変更箇所が見えてくるからです。がんばってください。
@@CodingOcean わかりました。サンプルをよく解析し教材にさせていただきます。
ネットに転がっているフリー素材の弾を使用すると画像サイズが大きすぎて困ってます。サイズを調整するコードを教えてもらうことは可能でしょうか?
imageの5番目の引数(角度の次)に0.5などを指定すると縮小されます。縦横別の比率は指定できません。
C++で”いらすとや”の画像を貼り付けたいのですが、未熟なもので方法が分かりません。お時間あれば動画等で、ご教授いただけないでしょうか。
ruclips.net/video/ZExz4iMFXfE/видео.html&pp=gAQBiAQB の動画ではだめでしょうか。
@@CodingOcean 昨日、この動画見てできました。ありがとうございます。
日本語で最近のDirectXを学習出来る貴重な動画です。
スキンメッシュの回まであったら嬉しいです。😘
DirectX12でやろうと計画中ですが、そこまで行きつくのはかなり先に 。。。。。。。。。。。。。。。なりそうです。