Vuo  1.1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Macros | Typedefs | Enumerations | Functions
VuoGlPool.h File Reference

Description

VuoGlPool interface.

Macros

#define VuoGlPool_retain(glBufferName)   VuoGlPool_retainF(glBufferName, __FILE__, __LINE__, __func__);
 Increments the reference count for glBufferName.
 
#define VuoGlPool_release(type, size, glBufferName)   VuoGlPool_releaseF(type, size, glBufferName, __FILE__, __LINE__, __func__);
 Decrements the reference count for glBufferName.
 

Typedefs

typedef void * VuoIoSurface
 A Mac OS X IOSurface.
 

Enumerations

enum  VuoGlPoolType { VuoGlPool_ArrayBuffer, VuoGlPool_ElementArrayBuffer }
 Types of OpenGL objects supported by Vuo's GL object pool. More...
 

Functions

GLuint VuoGlPool_use (VuoGlPoolType type, unsigned long size)
 Returns an OpenGL Buffer Object of type type.
 
void VuoGlPool_retainF (GLuint glBufferName, const char *file, unsigned int line, const char *func)
 Helper for VuoGlPool_retain.
 
void VuoGlPool_releaseF (VuoGlPoolType type, unsigned long size, GLuint glBufferName, const char *file, unsigned int line, const char *func)
 Helper for VuoGlPool_release.
 
GLuint VuoGlTexturePool_use (VuoGlContext glContext, GLenum internalformat, unsigned short width, unsigned short height, GLenum format)
 Returns an OpenGL texture.
 
GLuint VuoGlTexture_getType (GLuint format)
 Returns the OpenGL texture data type corresponding with OpenGL texture format.
 
void VuoGlTexture_retain (GLuint glTextureName, VuoImage_freeCallback freeCallback, void *freeCallbackContext)
 Increments the reference count for glTextureName.
 
void VuoGlTexture_release (GLenum internalformat, unsigned short width, unsigned short height, GLuint glTextureName, GLuint glTextureTarget)
 Decrements the reference count for glTextureName.
 
void VuoGlTexture_disown (GLuint glTextureName)
 Removes glTextureName from Vuo's reference count table (without deleting it like VuoGlTexture_release does).
 
VuoIoSurface VuoIoSurfacePool_use (VuoGlContext glContext, unsigned short pixelsWide, unsigned short pixelsHigh, GLuint *outputTexture)
 Returns an IOSurface (backed by outputTexture) with the specified dimensions.
 
uint32_t VuoIoSurfacePool_getId (VuoIoSurface ioSurface)
 Returns the IOSurface's interprocess ID.
 
void VuoIoSurfacePool_disuse (VuoGlContext glContext, unsigned short pixelsWide, unsigned short pixelsHigh, VuoIoSurface ioSurface, GLuint texture)
 Called by the sending end of an IOSurface texture transfer to indicate that it is finished using the IOSurface's texture.
 
void VuoIoSurfacePool_signal (VuoIoSurface ioSurface)
 Called by the receiving end of an IOSurface texture transfer to indicate that it is finished using the IOSurface's texture.
 
GLuint VuoGlShader_use (VuoGlContext glContext, GLenum type, const char *source)
 Returns an OpenGL Shader Object representing the specified source.
 
char * VuoGl_stringForConstant (GLenum constant)
 Returns a string for the specified OpenGL constant.
 

Macro Definition Documentation

#define VuoGlPool_release (   type,
  size,
  glBufferName 
)    VuoGlPool_releaseF(type, size, glBufferName, __FILE__, __LINE__, __func__);

Decrements the reference count for glBufferName.

This function may be called from any thread.

#define VuoGlPool_retain (   glBufferName)    VuoGlPool_retainF(glBufferName, __FILE__, __LINE__, __func__);

Increments the reference count for glBufferName.

This function may be called from any thread.

Typedef Documentation

typedef void* VuoIoSurface

A Mac OS X IOSurface.

Enumeration Type Documentation

Types of OpenGL objects supported by Vuo's GL object pool.

Function Documentation

char* VuoGl_stringForConstant ( GLenum  constant)

Returns a string for the specified OpenGL constant.

The caller is responsible for freeing the string returned by this function.

void VuoGlPool_releaseF ( VuoGlPoolType  type,
unsigned long  size,
GLuint  glBufferName,
const char *  file,
unsigned int  line,
const char *  func 
)

Helper for VuoGlPool_release.

void VuoGlPool_retainF ( GLuint  glBufferName,
const char *  file,
unsigned int  line,
const char *  func 
)

Helper for VuoGlPool_retain.

GLuint VuoGlPool_use ( VuoGlPoolType  type,
unsigned long  size 
)

Returns an OpenGL Buffer Object of type type.

If an existing, unused buffer of the specified type and size is available, it is returned. Otherwise, a new buffer is created.

Todo:
https://b33p.net/kosada/node/6901 The returned buffer's storage ~~is~~ will be preallocated (so the caller can efficiently upload data using glBufferSubData),

This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)

Todo:
https://b33p.net/kosada/node/6901
GLuint VuoGlShader_use ( VuoGlContext  glContext,
GLenum  type,
const char *  source 
)

Returns an OpenGL Shader Object representing the specified source.

To improve performance, this function keeps a cache of precompiled shaders. If a precompiled shader exists for the specified source, that shader is returned. Otherwise, source is passed off to OpenGL to be compiled.

Do not call glDeleteShaders() on the returned shader; it's expected to persist throughout the lifetime of the process.

void VuoGlTexture_disown ( GLuint  glTextureName)

Removes glTextureName from Vuo's reference count table (without deleting it like VuoGlTexture_release does).

glTextureName must have a reference count of exactly 1 (i.e., a texture being used in multiple places throughout Vuo cannot be disowned).

After Vuo disowns the texture, the caller is responsible for eventually deleting it.

This function may be called from any thread.

GLuint VuoGlTexture_getType ( GLuint  format)

Returns the OpenGL texture data type corresponding with OpenGL texture format.

Assumes format refers to an 8-bits-per-channel texture.

void VuoGlTexture_release ( GLenum  internalformat,
unsigned short  width,
unsigned short  height,
GLuint  glTextureName,
GLuint  glTextureTarget 
)

Decrements the reference count for glTextureName.

This function may be called from any thread.

void VuoGlTexture_retain ( GLuint  glTextureName,
VuoImage_freeCallback  freeCallback,
void *  freeCallbackContext 
)

Increments the reference count for glTextureName.

This function may be called from any thread.

GLuint VuoGlTexturePool_use ( VuoGlContext  glContext,
GLenum  internalformat,
unsigned short  width,
unsigned short  height,
GLenum  format 
)

Returns an OpenGL texture.

If an existing, unused texture matching the specified internalformat, width, and height is available, it is returned. Otherwise, a new texture is created.

The returned texture's storage is preallocated (so the caller can efficiently upload data using glTexSubImage2D), and its texturing properties are set to the defaults:

  • wrapping: clamp to border
  • filtering: linear

See glTexImage2D for information about internalformat and format.

This function may be called from any thread. (However, the caller is responsible for ensuring that the GL context is not used simultaneously on multiple threads.)

void VuoIoSurfacePool_disuse ( VuoGlContext  glContext,
unsigned short  pixelsWide,
unsigned short  pixelsHigh,
VuoIoSurface  ioSurface,
GLuint  texture 
)

Called by the sending end of an IOSurface texture transfer to indicate that it is finished using the IOSurface's texture.

This enables the IOSurface to be reused for another texture transfer (once the receiving end indicates it is done with it, via VuoIoSurfacePool_signal()).

uint32_t VuoIoSurfacePool_getId ( VuoIoSurface  ioSurface)

Returns the IOSurface's interprocess ID.

void VuoIoSurfacePool_signal ( VuoIoSurface  ioSurface)

Called by the receiving end of an IOSurface texture transfer to indicate that it is finished using the IOSurface's texture.

This enables the sender to reuse the IOSurface for another texture transfer.

VuoIoSurface VuoIoSurfacePool_use ( VuoGlContext  glContext,
unsigned short  pixelsWide,
unsigned short  pixelsHigh,
GLuint *  outputTexture 
)

Returns an IOSurface (backed by outputTexture) with the specified dimensions.

Uses an IOSurface from the pool, if possible. If not, creates a new IOSurface.