---
url: /api/core/program/functions/createProgram.md
---
# createProgram()

```ts
function createProgram(
  gl: WebGL2RenderingContext,
  fragment: string | WebGLShader,
  vertex: string | WebGLShader,
  transformFeedbackVaryings?: string[],
): WebGLProgram | null;
```

Creates and links a WebGL program with vertex and fragment shaders.

This function also handles transform feedback configuration if requested.

## Parameters

### gl

`WebGL2RenderingContext`

The WebGL2 context.

### fragment

`string` | `WebGLShader`

Fragment shader source string or pre-compiled WebGLShader.

### vertex

`string` | `WebGLShader`

Vertex shader source string or pre-compiled WebGLShader.

### transformFeedbackVaryings?

`string`\[]

Optional array of varying names for Transform Feedback.

## Returns

`WebGLProgram` | `null`

The linked WebGLProgram, or null if creation or linking failed.
