<!--
{
  "documentType" : "article",
  "framework" : "GLKit",
  "identifier" : "/documentation/GLKit/glkmatrix4-pce",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "GLKMatrix4"
}
-->

# GLKMatrix4

## Overview

The [`GLKMatrix4`](/documentation/GLKit/GLKMatrix4) type defines a `4x4` floating-point matrix as well as many mathematical operations commonly used to manipulate matrices. 3D graphics programming uses matrices extensively as a convenient way to represent a graphical transformation between different coordinate systems. These transformations include translation, scaling, rotation and projection; through matrix multiplication, multiple transformations can be concatenated into a single transformation matrix.

The functions that manipulate [`GLKMatrix4`](/documentation/GLKit/GLKMatrix4) structures treat the inputs as immutable, instead returning a new matrix that represent the results of the operation.

## Topics

### Creating Matrices

[`GLKMatrix4Make`](/documentation/GLKit/GLKMatrix4Make(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Returns a `4x4` matrix created from individual component values.

[`GLKMatrix4MakeAndTranspose`](/documentation/GLKit/GLKMatrix4MakeAndTranspose(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Returns a `4x4` transposed matrix created from individual component values.

[`GLKMatrix4MakeWithArray`](/documentation/GLKit/GLKMatrix4MakeWithArray(_:))

Returns a `4x4` matrix created from an array of component values.

[`GLKMatrix4MakeWithArrayAndTranspose`](/documentation/GLKit/GLKMatrix4MakeWithArrayAndTranspose(_:))

Returns a `4x4` transposed matrix created from an array of component values.

[`GLKMatrix4MakeWithColumns`](/documentation/GLKit/GLKMatrix4MakeWithColumns(_:_:_:_:))

Returns a `4x4` matrix created from four column vectors.

[`GLKMatrix4MakeWithRows`](/documentation/GLKit/GLKMatrix4MakeWithRows(_:_:_:_:))

Returns a `4x4` matrix created from four row vectors.

[`GLKMatrix4MakeRotation`](/documentation/GLKit/GLKMatrix4MakeRotation(_:_:_:_:))

Returns a `4x4` matrix that performs a rotation around an arbitrary vector.

[`GLKMatrix4MakeXRotation`](/documentation/GLKit/GLKMatrix4MakeXRotation(_:))

Returns a `4x4` matrix that performs a rotation around the positive x-axis.

[`GLKMatrix4MakeYRotation`](/documentation/GLKit/GLKMatrix4MakeYRotation(_:))

Returns a `4x4` matrix that performs a rotation around the positive y-axis.

[`GLKMatrix4MakeZRotation`](/documentation/GLKit/GLKMatrix4MakeZRotation(_:))

Returns a `4x4` matrix that performs a rotation around the positive z-axis.

[`GLKMatrix4MakeWithQuaternion`](/documentation/GLKit/GLKMatrix4MakeWithQuaternion(_:))

Returns a `4x4` matrix that performs a rotation based on a quaternion.

[`GLKMatrix4MakeScale`](/documentation/GLKit/GLKMatrix4MakeScale(_:_:_:))

Returns a `4x4` matrix that performs a scaling transformation.

[`GLKMatrix4MakeTranslation`](/documentation/GLKit/GLKMatrix4MakeTranslation(_:_:_:))

Returns a `4x4` matrix that performs a translation.

[`GLKMatrix4MakeLookAt`](/documentation/GLKit/GLKMatrix4MakeLookAt(_:_:_:_:_:_:_:_:_:))

Returns a `4x4` matrix that transforms world coordinates to eye coordinates.

[`GLKMatrix4MakeOrtho`](/documentation/GLKit/GLKMatrix4MakeOrtho(_:_:_:_:_:_:))

Returns a `4x4` orthographic projection matrix.

[`GLKMatrix4MakePerspective`](/documentation/GLKit/GLKMatrix4MakePerspective(_:_:_:_:))

Returns a `4x4` perspective projection matrix.

[`GLKMatrix4MakeFrustum`](/documentation/GLKit/GLKMatrix4MakeFrustum(_:_:_:_:_:_:))

Returns a `4x4` perspective projection matrix.

### Working With Parts of a Matrix

[`GLKMatrix4GetMatrix2`](/documentation/GLKit/GLKMatrix4GetMatrix2(_:))

Returns the upper-left `2x2` section of a `4x4` matrix.

[`GLKMatrix4GetMatrix3`](/documentation/GLKit/GLKMatrix4GetMatrix3(_:))

Returns the upper-left `3x3` section of a `4x4` matrix.

[`GLKMatrix4GetColumn`](/documentation/GLKit/GLKMatrix4GetColumn(_:_:))

Retrieves a column from a `4x4` matrix.

[`GLKMatrix4GetRow`](/documentation/GLKit/GLKMatrix4GetRow(_:_:))

Retrieves a row from a `4x4` matrix.

[`GLKMatrix4SetColumn`](/documentation/GLKit/GLKMatrix4SetColumn(_:_:_:))

Returns a new `4x4` matrix with one column replaced by a new vector.

[`GLKMatrix4SetRow`](/documentation/GLKit/GLKMatrix4SetRow(_:_:_:))

Returns a new `4x4` matrix with one row replaced by a new vector.

### Performing Mathematical Operations on Matrices

[`GLKMatrix4Invert`](/documentation/GLKit/GLKMatrix4Invert(_:_:))

Returns the inverse of a matrix.

[`GLKMatrix4Transpose`](/documentation/GLKit/GLKMatrix4Transpose(_:))

Returns the transpose of a matrix.

[`GLKMatrix4InvertAndTranspose`](/documentation/GLKit/GLKMatrix4InvertAndTranspose(_:_:))

Returns the inverse transpose of a matrix.

[`GLKMatrix4Multiply`](/documentation/GLKit/GLKMatrix4Multiply(_:_:))

Returns the product of two matrices.

[`GLKMatrix4Rotate`](/documentation/GLKit/GLKMatrix4Rotate(_:_:_:_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around a vector.

[`GLKMatrix4RotateWithVector3`](/documentation/GLKit/GLKMatrix4RotateWithVector3(_:_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around a vector.

[`GLKMatrix4RotateWithVector4`](/documentation/GLKit/GLKMatrix4RotateWithVector4(_:_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around a vector.

[`GLKMatrix4RotateX`](/documentation/GLKit/GLKMatrix4RotateX(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around the x-axis.

[`GLKMatrix4RotateY`](/documentation/GLKit/GLKMatrix4RotateY(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around the y-axis.

[`GLKMatrix4RotateZ`](/documentation/GLKit/GLKMatrix4RotateZ(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a rotation around the z-axis.

[`GLKMatrix4Scale`](/documentation/GLKit/GLKMatrix4Scale(_:_:_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a scaling transform.

[`GLKMatrix4ScaleWithVector3`](/documentation/GLKit/GLKMatrix4ScaleWithVector3(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a scaling transform defined by a vector.

[`GLKMatrix4ScaleWithVector4`](/documentation/GLKit/GLKMatrix4ScaleWithVector4(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a scaling transform defined by a vector.

[`GLKMatrix4Translate`](/documentation/GLKit/GLKMatrix4Translate(_:_:_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a translation transform.

[`GLKMatrix4TranslateWithVector3`](/documentation/GLKit/GLKMatrix4TranslateWithVector3(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a translation transform defined by a vector.

[`GLKMatrix4TranslateWithVector4`](/documentation/GLKit/GLKMatrix4TranslateWithVector4(_:_:))

Returns a new `4x4` matrix created by concatenating a matrix with a translation transform defined by a vector.

[`GLKMatrix4Add`](/documentation/GLKit/GLKMatrix4Add(_:_:))

Returns a new `4x4` matrix created by performing a component-wise addition of two matrices.

[`GLKMatrix4Subtract`](/documentation/GLKit/GLKMatrix4Subtract(_:_:))

Returns a new `4x4` matrix created by performing a component-wise subtraction of two matrices.

### Performing Mathematical Operations on Vectors

[`GLKMatrix4MultiplyVector3`](/documentation/GLKit/GLKMatrix4MultiplyVector3(_:_:))

Multiplies a `4x4` matrix by a `3`-component vector.

[`GLKMatrix4MultiplyVector3Array`](/documentation/GLKit/GLKMatrix4MultiplyVector3Array(_:_:_:))

Multiplies a `4x4` matrix by an array of `3`-component vectors.

[`GLKMatrix4MultiplyVector3WithTranslation`](/documentation/GLKit/GLKMatrix4MultiplyVector3WithTranslation(_:_:))

Multiplies a `4x4` matrix by a `3`-component vector, applying translation.

[`GLKMatrix4MultiplyVector3ArrayWithTranslation`](/documentation/GLKit/GLKMatrix4MultiplyVector3ArrayWithTranslation(_:_:_:))

Multiplies a `4x4` matrix by an array of `3`-component vectors, applying translation.

[`GLKMatrix4MultiplyVector4`](/documentation/GLKit/GLKMatrix4MultiplyVector4(_:_:))

Multiplies a `4x4` matrix by a `4`-component vector.

[`GLKMatrix4MultiplyVector4Array`](/documentation/GLKit/GLKMatrix4MultiplyVector4Array(_:_:_:))

Multiplies a `4x4` matrix by an array of `4`-component vectors.

[`GLKMatrix4MultiplyAndProjectVector3`](/documentation/GLKit/GLKMatrix4MultiplyAndProjectVector3(_:_:))

Multiplies a `4x4` matrix by a position vector to create a vector in homogenous coordinates, then projects the result to a `3`-component vector.

[`GLKMatrix4MultiplyAndProjectVector3Array`](/documentation/GLKit/GLKMatrix4MultiplyAndProjectVector3Array(_:_:_:))

Multiplies a `4x4` matrix by an array of `3`-component vectors. Each result is projected back to `3`-component vector.

### Data Types

[`GLKMatrix4`](/documentation/GLKit/GLKMatrix4)

A `4x4` matrix.

### Constants

[`GLKMatrix4Identity`](/documentation/GLKit/GLKMatrix4Identity)

A `4x4` identity matrix.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)