## Name

glGetBufferPointerv, glGetNamedBufferPointerv — return the pointer to a mapped buffer object's data store

## C Specification

`void glGetBufferPointerv(` | GLenum target,
| GLenum pname,
| GLvoid ** params`)`;

`void glGetNamedBufferPointerv(` | GLuint buffer,
| GLenum pname,
| void **params`)`;

## Parameters

`target`

  Specifies the target to which the buffer object is bound for `glGetBufferPointerv`, which must be one of the buffer binding targets in the following table:

  Buffer Binding Target | Purpose
  --- | ---
  `GL_ARRAY_BUFFER` | Vertex attributes
  `GL_ATOMIC_COUNTER_BUFFER` | Atomic counter storage
  `GL_COPY_READ_BUFFER` | Buffer copy source
  `GL_COPY_WRITE_BUFFER` | Buffer copy destination
  `GL_DISPATCH_INDIRECT_BUFFER` | Indirect compute dispatch commands
  `GL_DRAW_INDIRECT_BUFFER` | Indirect command arguments
  `GL_ELEMENT_ARRAY_BUFFER` | Vertex array indices
  `GL_PIXEL_PACK_BUFFER` | Pixel read target
  `GL_PIXEL_UNPACK_BUFFER` | Texture data source
  `GL_QUERY_BUFFER` | Query result buffer
  `GL_SHADER_STORAGE_BUFFER` | Read-write storage for shaders
  `GL_TEXTURE_BUFFER` | Texture data buffer
  `GL_TRANSFORM_FEEDBACK_BUFFER` | Transform feedback buffer
  `GL_UNIFORM_BUFFER` | Uniform block storage

`buffer`

  Specifies the name of the buffer object for `glGetNamedBufferPointerv`.

`pname`

  Specifies the name of the pointer to be returned. Must be `GL_BUFFER_MAP_POINTER`.

`params`

  Returns the pointer value specified by `pname`.

## Description

`glGetBufferPointerv` and `glGetNamedBufferPointerv` return the buffer pointer `pname`, which must be `GL_BUFFER_MAP_POINTER`. The single buffer map pointer is returned in `params`. A `NULL` pointer is returned if the buffer object's data store is not currently mapped; or if the requesting context did not map the buffer object's data store, and the implementation is unable to support mappings on multiple clients.

## Notes

If an error is generated, no change is made to the contents of `params`.

The initial value for the pointer is `NULL`.

The `GL_ATOMIC_COUNTER_BUFFER` target is available only if the GL version is 4.2 or greater.

The `GL_DISPATCH_INDIRECT_BUFFER` and `GL_SHADER_STORAGE_BUFFER` targets are available only if the GL version is 4.3 or greater.

The `GL_QUERY_BUFFER` target is available only if the GL version is 4.4 or greater.

## Errors

`GL_INVALID_ENUM` is generated if by `glGetBufferPointerv` if `target` is not one of the accepted buffer targets, or if `pname` is not `GL_BUFFER_MAP_POINTER`.

`GL_INVALID_OPERATION` is generated by `glGetBufferPointerv` if zero is bound to `target`.

`GL_INVALID_OPERATION` is generated by `glGetNamedBufferPointerv` if `buffer` is not the name of an existing buffer object.

## 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
`glGetBufferPointerv` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔
`glGetNamedBufferPointerv` | - | - | - | - | - | - | - | - | - | - | - | ✔

## See Also

glBindBuffer, glMapBuffer

## Copyright

Copyright © 2005 Addison-Wesley. Copyright © 2011-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/.