## Name

glDrawTransformFeedbackStreamInstanced — render multiple instances of primitives using a count derived from a specifed stream of a transform feedback object

## C Specification

`void glDrawTransformFeedbackStreamInstanced(` | GLenum mode,
| GLuint id,
| GLuint stream,
| GLsizei primcount`)`;

## Parameters

`mode`

  Specifies what kind of primitives to render. Symbolic constants `GL_POINTS`, `GL_LINE_STRIP`, `GL_LINE_LOOP`, `GL_LINES`, `GL_LINE_STRIP_ADJACENCY`, `GL_LINES_ADJACENCY`, `GL_TRIANGLE_STRIP`, `GL_TRIANGLE_FAN`, `GL_TRIANGLES`, `GL_TRIANGLE_STRIP_ADJACENCY`, `GL_TRIANGLES_ADJACENCY`, and `GL_PATCHES` are accepted.

`id`

  Specifies the name of a transform feedback object from which to retrieve a primitive count.

`stream`

  Specifies the index of the transform feedback stream from which to retrieve a primitive count.

`primcount`

  Specifies the number of instances of the geometry to render.

## Description

`glDrawTransformFeedbackStreamInstanced` draws multiple copies of a range of primitives of a type specified by `mode` using a count retrieved from the transform feedback stream specified by `stream` of the transform feedback object specified by `id`. Calling `glDrawTransformFeedbackStreamInstanced` is equivalent to calling glDrawArraysInstanced with `mode` and `primcount` as specified, `first` set to zero, and `count` set to the number of vertices captured on vertex stream `stream` the last time transform feedback was active on the transform feedback object named by `id`.

Calling glDrawTransformFeedbackInstanced is equivalent to calling `glDrawTransformFeedbackStreamInstanced` with `stream` set to zero.

## Errors

`GL_INVALID_ENUM` is generated if `mode` is not an accepted value.

`GL_INVALID_VALUE` is generated if `id` is not the name of a transform feedback object.

`GL_INVALID_VALUE` is generated if `stream` is greater than or equal to the value of `GL_MAX_VERTEX_STREAMS`.

`GL_INVALID_OPERATION` is generated if a non-zero buffer object name is bound to an enabled array and the buffer object's data store is currently mapped.

`GL_INVALID_OPERATION` is generated if a geometry shader is active and `mode` is incompatible with the input primitive type of the geometry shader in the currently installed program object.

`GL_INVALID_OPERATION` is generated if `mode` is `GL_PATCHES` and no tessellation control shader is active.

`GL_INVALID_OPERATION` is generated if `glEndTransformFeedback` has never been called while the transform feedback object named by `id` was bound.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glDrawTransformFeedbackStreamInstanced` | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔

## See Also

glDrawArrays, glDrawArraysInstanced, glDrawElements, glDrawRangeElements, glDrawTransformFeedback, glDrawTransformFeedbackStream.

## Copyright

Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.