<!--
{
  "availability" : [
    "iOS: 5.0 -",
    "iPadOS: 5.0 -",
    "macCatalyst: -",
    "macOS: 10.8 -",
    "tvOS: 9.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "GLKit",
  "identifier" : "/documentation/GLKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "GLKit"
    ],
    "preciseIdentifier" : "GLKit"
  },
  "title" : "GLKit"
}
-->

# GLKit

Speed up OpenGL ES or OpenGL app development. Use math libraries, background texture loading, pre-created shader effects, and a standard view and view controller to implement your rendering loop.

## Overview

The GLKit framework provides functions and classes that reduce the effort required to create new shader-based apps or to port existing apps that rely on fixed-function vertex or fragment processing provided by earlier versions of OpenGL ES or OpenGL.

### GLKit Features

GLKit provides functionality in four key areas:

- *Texture loading* allows your app to easily load textures from a variety of sources. Textures can even be loaded asynchronously in the background with just a few lines of code. For more information, see [`GLKTextureLoader`](/documentation/GLKit/GLKTextureLoader).
- *Math libraries* provide commonly used vector, quaternion and matrix operations. These implementations are optimized to provide great performance.
- *Effects* provide standard implementations of common shader effects. You configure the effect and the associated vertex data; the effect creates and loads an appropriate shader. GLKit includes three effects: The [`GLKBaseEffect`](/documentation/GLKit/GLKBaseEffect) class implements a critical subset of the OpenGL ES 1.1 shading and lighting model, the [`GLKReflectionMapEffect`](/documentation/GLKit/GLKReflectionMapEffect) class extends the base effect to include reflection mapping support, and the [`GLKSkyboxEffect`](/documentation/GLKit/GLKSkyboxEffect) class provides an implementation of a skybox effect.
- *Views and View Controllers* provide a standard implementation of an OpenGL ES view and a corresponding view controller. This reduces the amount of code needed to create an iOS app that use OpenGL ES. For more information, see [`GLKView`](/documentation/GLKit/GLKView) and [`GLKViewController`](/documentation/GLKit/GLKViewController).

On iOS, GLKit requires an OpenGL ES 2.0 context. In macOS, GLKit requires an OpenGL context that supports the OpenGL 3.2 Core Profile.

## Topics

### Texture Loading

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

Information about OpenGL textures created by the [`GLKTextureLoader`](/documentation/GLKit/GLKTextureLoader) class.

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

A utility class that simplifies loading OpenGL or OpenGL ES texture datas from a variety of image file formats.

### OpenGL ES View Rendering

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

A default implementation for views that draw their content using OpenGL ES.

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

Drawing callback methods for use with a [`GLKView`](/documentation/GLKit/GLKView) object.

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

A view controller that manages an OpenGL ES rendering loop.

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

Rendering loop callback methods for use with a [`GLKViewController`](/documentation/GLKit/GLKViewController) object.

### Mesh Data Management

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

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

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

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

### Shader-Based Rendering Effects

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

A standard interface for objects that provide shader-based OpenGL rendering effects.

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

A simple lighting and shading system for use in shader-based OpenGL rendering.

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

A lighting and shading system that supports reflection mapping for use in shader-based OpenGL rendering.

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

A simple skybox visual effect for use in shader-based OpenGL rendering.

### Rendering Effect Parameters

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

The abstract superclass for configuration information used in GLKit rendering effects.

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

Fog drawing information for use in GLKit rendering effects.

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

Lighting information for use in GLKit rendering effects.

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

Texture drawing parameters for use in GLKit rendering effects.

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

Surface appearance properties for use in GLKit rendering effects.

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

Coordinate transform information for use in GLKit rendering effects.

[GLKit Effects Constants](/documentation/GLKit/glkit-effects-constants)

### Math Utilties

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

An opaque type that represents a stack of 4 x 4 matrices, providing support for hierarchical transform modeling and similar tasks.

[GLKMatrix3](/documentation/GLKit/glkmatrix3-pcl)

[GLKMatrix4](/documentation/GLKit/glkmatrix4-pce)

[GLKVector2](/documentation/GLKit/glkvector2-pbj)

[GLKVector3](/documentation/GLKit/glkvector3-pbt)

[GLKVector4](/documentation/GLKit/glkvector4-pbk)

[GLKQuaternion](/documentation/GLKit/glkquaternion-pc6)

[GLKit Math Utilities](/documentation/GLKit/glkit-math-utilities)

### Reference

[GLKit Structures](/documentation/GLKit/glkit-structures)

[GLKit Enumerations](/documentation/GLKit/glkit-enumerations)

[GLKit Constants](/documentation/GLKit/glkit-constants)

[GLKit Functions](/documentation/GLKit/glkit-functions)

[GLKit Data Types](/documentation/GLKit/glkit-data-types)

## See Also

  [OpenGL Programming Guide for Mac](https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html#//apple_ref/doc/uid/TP40001987)

  [OpenGL ES Programming Guide](https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008793)



---

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)