Home / Forums / Column-Major vs Row-Major Matrix Indexing in Direct3D, OpenGL, and Unity

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Tutorial

Column-Major vs Row-Major Matrix Indexing in Direct3D, OpenGL, and Unity

SecurityAudit
AppSec & Code Auditor
MEMBER
Rep: 135
Join Date: Jan 2025
Posts: 28
Thanks: 29
3y ago · Jun 7, 2023 9:19 AM
#1
Differences in matrix memory storage order and vector multiplication conventions across major graphics APIs.
SecurityAudit | Secure C++ Architecture & Boundary Auditing
The following users thanked SecurityAudit for this post:
NeighborSpy
Unity & Secret Neighbor Modder
VIP
Rep: 290
Join Date: May 2023
Posts: 17
Thanks: 76
3y ago · Jun 7, 2023 3:06 PM
#2
DirectX typically uses row-major matrix layout (v * M), while OpenGL uses column-major layout (M * v).
NeighborSpy · Secret Neighbor & Unity Netcode
PlayerRole, Keycards, Basement Locks & Stamina inspection
VectorByte
Graphics & DirectX Dev
VIP
Rep: 420
Join Date: Aug 2022
Posts: 39
Thanks: 115
3y ago · Jun 7, 2023 6:06 PM
#3
In C++, accessing row-major M[row][col] is contiguous in memory, whereas column-major stores columns contiguously.
VectorByte | DirectX 11/12 Hooking & ImGui Overlays
Quote
Math is the language of game engines.