LoginSignup
7
0

第一回 ゲームプログラム初心者がDirectXに手を出してみた

Last updated at Posted at 2023-12-22

雑談

皆様初めまして、ネットではシロクマさんという名前で生活をしている者です。

今回は入社させていただいた会社の方でqiitaのイベントに参加するとのことでしたので、自分の方でも参加させていただきました。
ブログ的な物はやりたいと思っていたのですが、まさか初ブログが技術系のブログになろうとは、、、
まったり雑談交じりの雰囲気でやっていきますので、
少し時間がある時に暇つぶし感覚で読んでいってもらえると嬉しいです。

記事の内容

タイトルにもある通り、自分のブログではDirectXをちまちま扱っていこうと思います。
専門学校でゲーム開発の勉強をしていた時はDirectXをがっつり触ることは無かったのでちょっと楽しみだったり、、、
参考書を見ながら勉強しているので、書いてあるコードを載せるより、不明な部分を抜粋して、半備忘録的な感じになります。

勉強に使っていく参考書は↓
https://amzn.asia/d/c5WxIuS

ハイ、魔導書です。めちゃめちゃ分厚いです。
終わるまで何年かかるかわかりませんが、まったりやっていきましょう。

使用する知識

ご存じの方も多いと思いますが、DirectXで3Dのプログラムをする場合数学的な知識がかなり必要とされます。

本書の記載だと

  • 三角関数
  • n次方程式
  • 数列
  • 図形問題
  • 指数対数
  • 微積分
  • ベクトル
  • 行列
    を使うらしいです。
    数2Bで挫折した自分としては大分ハードルが高いですね、、、、

本題

DIrectX初期化

魔導書を進めて行くとまずここで詰まりました。

DirectXの機能を使うにあたって、
以下のオブジェクトを初期化(生成)する必要があるらしいです

  • D3D12Device
  • DXGIFactory
  • DXGISwapchain

そもそもこいつらは一体何者なのかとなるので、調べてみます

D3D12Device

実際に生成しているクラスはID3D12Device

主な機能

  1. リソースの作成と管理:
    • バッファやテクスチャなどのグラフィックスリソースを作成するためのメソッドを提供している。これにより、アプリケーションはGPUメモリ内に配置されたリソースを作成および管理できる。
  2. パイプラインステートの作成
  3. コマンドキューの作成
  4. デスクリプタヒープの作成
  5. GPUとのやり取り
  6. フィーチャーサポートの取得

DXGIFactory

実際に生成しているクラスはIDXGIFactory6

主な機能

  1. デバイスの作成
    • IDXGIFactory6 は、CreateDevice メソッドを通じて、Direct3D 12デバイスを作成するのに使用されます。このデバイスは、Direct3D 12 APIを使用してグラフィックスリソースを作成し、描画処理を行います。
  2. ハードウェアのサポート状況の取得
  3. Direct3D 12およびDirect3D 11のサポート
  4. DXGIオブジェクトの作成と管理
  5. ハードウェアアダプターの列挙

正直難しい事ばかりでよくわからないので、まとめると
描画処理などのグラフィックスAPIの操作ができるようになる物らしいです。

DXGISwapchain

実際に生成しているクラスはIDXGISwapChain4

  1. HDR(High Dynamic Range)サポート:
  2. オーディオ出力との同期:
  3. オーバーレイプレーンのサポート:
  4. マルチプレゼンテーション:

アプリケーションが画面上で描画した結果をユーザに表示する際に使用されます。

画面上に実際に表示させている場所と新しく描画するものを準備しておく場所があり、その二つを切り替えたりするような機能があるイメージになります

あとがき

第一回はいったんここまで(長すぎるとスクロールするのも大変なので、、、
第二回ではこれらをどのように使っているか等を書けたらいいなと思います。

バイバーイ:open_hands:

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0