Unity-like DirectX framework for learning purposes. ※ This project is primarily documented in Japanese.
UniDxは、UnityライクなDirectX用ゲームフレームワークです。
用途
- DirectX 入門(特にUnity経験者)
- ゲームフレームワークの構造理解に
- フレームワーク作成の参考・たたき台として
特徴
動作環境
- Windows 10/11
- Visual Studio 2022/2026
- DirectX 11
- C++20
- x64
依存ライブラリ
- DirectXTK
- DirectXTex
- tinygltf
サンプル実行手順
準備
このリポジトリは外部ライブラリを Git submodule として管理しています。
clone 後、以下のコマンドをはじめに一度、実行してください。
git submodule update --init --recursive
または、このリポジトリ自体を以下のコマンドでcloneしても構いません。
git clone --recursive https://github.com/nittamas/UniDx.git
実行
/samples/UniDxSamples.sln を Visual Studio で開いてください。
ソリューションエクスプローラーで、Sample1_Sphereを右クリックして、 [スタートアップ プロジェクトに設定]を選択してください。
メニューから[デバッグ]-[デバッグの開始]を選択してください。
Unityとの比較
座標系
- 座標系: Unity と同じ左手座標系(Y-up、Z-forward)
- 行列レイアウト: Row-Major(DirectX標準)
行列・クォータニオン演算の順序
Vector3 worldPos = localPos * worldMatrix;
Vector3 direction = localDir * rotation;
シェーダー内での行列演算
// UniDx (HLSL)
float4 worldPos = mul(float4(localPos, 1), world);
float4 clipPos = mul(worldPos, view);
clipPos = mul(clipPos, projection);
// Unity (ShaderLab)
// float4 clipPos = mul(UNITY_MATRIX_MVP, float4(localPos, 1));
※ UniDx は Unity Technologies および Microsoft と関係のない、独立したプロジェクトです。